@taiga-ui/kit 4.16.0 → 4.17.0-canary.6b1f985

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.
@@ -5,7 +5,7 @@ import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
5
5
  import { EMPTY_QUERY } from '@taiga-ui/cdk/constants';
6
6
  import { TuiItem } from '@taiga-ui/cdk/directives/item';
7
7
  import { TuiPan } from '@taiga-ui/cdk/directives/pan';
8
- import { TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
8
+ import { TUI_SWIPE_OPTIONS, TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
9
9
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
10
10
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
11
11
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
@@ -65,8 +65,8 @@ class TuiCarouselComponent {
65
65
  return index < this.index || index > this.index + this.itemsCount;
66
66
  }
67
67
  onIntersection({ intersectionRatio }, index) {
68
- if (intersectionRatio && intersectionRatio !== 1 && !this.transitioned) {
69
- this.updateIndex(index - Math.floor(this.itemsCount / 2));
68
+ if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {
69
+ this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);
70
70
  }
71
71
  }
72
72
  onScroll(delta) {
@@ -109,7 +109,7 @@ class TuiCarouselComponent {
109
109
  this.cdr.markForCheck();
110
110
  }
111
111
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
112
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { draggable: "draggable", itemsCount: "itemsCount", indexSetter: ["index", "indexSetter"] }, outputs: { indexChange: "indexChange" }, host: { listeners: { "touchstart": "onTransitioned(false)", "touchend": "onTransitioned(true)", "mousedown": "onTransitioned(false)", "document:mouseup.silent": "onTransitioned(true)" }, properties: { "class._transitioned": "transitioned", "class._draggable": "draggable" } }, queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: i1.TuiCarouselDirective, inputs: ["duration", "duration"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionRoot\n waIntersectionRootMargin=\"100px 1000000px 100px -51%\"\n waIntersectionThreshold=\"0,1\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiCarouselAutoscroll, selector: "[tuiCarouselAutoscroll]", outputs: ["tuiCarouselAutoscroll"] }, { kind: "directive", type: TuiCarouselScroll, selector: "[tuiCarouselScroll]", outputs: ["tuiCarouselScroll"] }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["waIntersectionRootMargin", "waIntersectionThreshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }, { kind: "directive", type: i2.WaIntersectionRoot, selector: "[waIntersectionRoot]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { draggable: "draggable", itemsCount: "itemsCount", indexSetter: ["index", "indexSetter"] }, outputs: { indexChange: "indexChange" }, host: { listeners: { "touchstart": "onTransitioned(false)", "touchend": "onTransitioned(true)", "mousedown": "onTransitioned(false)", "document:mouseup.silent": "onTransitioned(true)" }, properties: { "class._transitioned": "transitioned", "class._draggable": "draggable" } }, providers: [{ provide: TUI_SWIPE_OPTIONS, useValue: { timeout: 200, threshold: 30 } }], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: i1.TuiCarouselDirective, inputs: ["duration", "duration"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none;touch-action:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiCarouselAutoscroll, selector: "[tuiCarouselAutoscroll]", outputs: ["tuiCarouselAutoscroll"] }, { kind: "directive", type: TuiCarouselScroll, selector: "[tuiCarouselScroll]", outputs: ["tuiCarouselScroll"] }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["waIntersectionRootMargin", "waIntersectionThreshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
113
  }
114
114
  __decorate([
115
115
  tuiPure
@@ -128,7 +128,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
128
128
  TuiPan,
129
129
  TuiSwipe,
130
130
  WaIntersectionObserver,
131
- ], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
131
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: TUI_SWIPE_OPTIONS, useValue: { timeout: 200, threshold: 30 } }], hostDirectives: [
132
132
  {
133
133
  directive: TuiCarouselDirective,
134
134
  inputs: ['duration'],
@@ -140,7 +140,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
140
140
  '(touchend)': 'onTransitioned(true)',
141
141
  '(mousedown)': 'onTransitioned(false)',
142
142
  '(document:mouseup.silent)': 'onTransitioned(true)',
143
- }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionRoot\n waIntersectionRootMargin=\"100px 1000000px 100px -51%\"\n waIntersectionThreshold=\"0,1\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"] }]
143
+ }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none;touch-action:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"] }]
144
144
  }], propDecorators: { items: [{
145
145
  type: ContentChildren,
146
146
  args: [TuiItem, { read: TemplateRef }]
@@ -154,4 +154,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
154
154
  type: Input,
155
155
  args: ['index']
156
156
  }], getStyle: [] } });
157
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXBGLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEQsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7QUFDMUQsT0FBTyxF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LFdBQVcsRUFBQztnQkFTdEMsU0FBUztzQkFEZixLQUFLO2dCQUlDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBSVUsV0FBVztzQkFEMUIsTUFBTTtnQkFJSSxXQUFXO3NCQURyQixLQUFLO3VCQUFDLE9BQU87Z0JBeUJKLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FzeW5jUGlwZSwgTmdGb3JPZiwgTmdJZiwgTmdTdHlsZSwgTmdUZW1wbGF0ZU91dGxldH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB0eXBlIHtRdWVyeUxpc3R9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb21wb25lbnQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBpbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7V2FJbnRlcnNlY3Rpb25PYnNlcnZlcn0gZnJvbSAnQG5nLXdlYi1hcGlzL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5pbXBvcnQge0VNUFRZX1FVRVJZfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aUl0ZW19IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9pdGVtJztcbmltcG9ydCB7VHVpUGFufSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvcGFuJztcbmltcG9ydCB0eXBlIHtUdWlTd2lwZURpcmVjdGlvbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3N3aXBlJztcbmltcG9ydCB7VHVpU3dpcGV9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9zd2lwZSc7XG5pbXBvcnQge1RVSV9JU19NT0JJTEV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdG9rZW5zJztcbmltcG9ydCB7dHVpSW5qZWN0RWxlbWVudH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9kb20nO1xuaW1wb3J0IHt0dWlDbGFtcH0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9tYXRoJztcbmltcG9ydCB7dHVpUHVyZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay91dGlscy9taXNjZWxsYW5lb3VzJztcblxuaW1wb3J0IHtUdWlDYXJvdXNlbERpcmVjdGl2ZX0gZnJvbSAnLi9jYXJvdXNlbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUdWlDYXJvdXNlbEF1dG9zY3JvbGx9IGZyb20gJy4vY2Fyb3VzZWwtYXV0b3Njcm9sbC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtUdWlDYXJvdXNlbFNjcm9sbH0gZnJvbSAnLi9jYXJvdXNlbC1zY3JvbGwuZGlyZWN0aXZlJztcblxuQENvbXBvbmVudCh7XG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBzZWxlY3RvcjogJ3R1aS1jYXJvdXNlbCcsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBBc3luY1BpcGUsXG4gICAgICAgIE5nRm9yT2YsXG4gICAgICAgIE5nSWYsXG4gICAgICAgIE5nU3R5bGUsXG4gICAgICAgIE5nVGVtcGxhdGVPdXRsZXQsXG4gICAgICAgIFR1aUNhcm91c2VsQXV0b3Njcm9sbCxcbiAgICAgICAgVHVpQ2Fyb3VzZWxTY3JvbGwsXG4gICAgICAgIFR1aVBhbixcbiAgICAgICAgVHVpU3dpcGUsXG4gICAgICAgIFdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXIsXG4gICAgXSxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2Fyb3VzZWwudGVtcGxhdGUuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vY2Fyb3VzZWwuc3R5bGUubGVzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGhvc3REaXJlY3RpdmVzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIGRpcmVjdGl2ZTogVHVpQ2Fyb3VzZWxEaXJlY3RpdmUsXG4gICAgICAgICAgICBpbnB1dHM6IFsnZHVyYXRpb24nXSxcbiAgICAgICAgfSxcbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ1tjbGFzcy5fdHJhbnNpdGlvbmVkXSc6ICd0cmFuc2l0aW9uZWQnLFxuICAgICAgICAnW2NsYXNzLl9kcmFnZ2FibGVdJzogJ2RyYWdnYWJsZScsXG4gICAgICAgICcodG91Y2hzdGFydCknOiAnb25UcmFuc2l0aW9uZWQoZmFsc2UpJyxcbiAgICAgICAgJyh0b3VjaGVuZCknOiAnb25UcmFuc2l0aW9uZWQodHJ1ZSknLFxuICAgICAgICAnKG1vdXNlZG93biknOiAnb25UcmFuc2l0aW9uZWQoZmFsc2UpJyxcbiAgICAgICAgJyhkb2N1bWVudDptb3VzZXVwLnNpbGVudCknOiAnb25UcmFuc2l0aW9uZWQodHJ1ZSknLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhcm91c2VsQ29tcG9uZW50IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVsID0gdHVpSW5qZWN0RWxlbWVudCgpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgY2RyID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlzTW9iaWxlID0gaW5qZWN0KFRVSV9JU19NT0JJTEUpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZGlyZWN0aXZlID0gaW5qZWN0KFR1aUNhcm91c2VsRGlyZWN0aXZlKTtcbiAgICBwcml2YXRlIHRyYW5zbGF0ZSA9IDA7XG5cbiAgICBAQ29udGVudENoaWxkcmVuKFR1aUl0ZW0sIHtyZWFkOiBUZW1wbGF0ZVJlZn0pXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGl0ZW1zOiBRdWVyeUxpc3Q8VGVtcGxhdGVSZWY8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+PiA9XG4gICAgICAgIEVNUFRZX1FVRVJZO1xuXG4gICAgcHJvdGVjdGVkIHRyYW5zaXRpb25lZCA9IHRydWU7XG5cbiAgICBwcm90ZWN0ZWQgaW5kZXggPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZHJhZ2dhYmxlID0gZmFsc2U7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtc0NvdW50ID0gMTtcblxuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyByZWFkb25seSBpbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgQElucHV0KCdpbmRleCcpXG4gICAgcHVibGljIHNldCBpbmRleFNldHRlcihpbmRleDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuaW5kZXggPSBpbmRleDtcbiAgICAgICAgdGhpcy5kaXJlY3RpdmUuZHVyYXRpb24gPSBOYU47XG4gICAgfVxuXG4gICAgcHVibGljIG5leHQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLml0ZW1zICYmIHRoaXMuaW5kZXggPT09IHRoaXMuaXRlbXMubGVuZ3RoIC0gdGhpcy5pdGVtc0NvdW50KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUluZGV4KHRoaXMuaW5kZXggKyAxKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcHJldigpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbmRleCh0aGlzLmluZGV4IC0gMSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCB0cmFuc2Zvcm0oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgeCA9IHRoaXMudHJhbnNpdGlvbmVkID8gdGhpcy5jb21wdXRlZFRyYW5zbGF0ZSA6IHRoaXMudHJhbnNsYXRlO1xuXG4gICAgICAgIHJldHVybiBgdHJhbnNsYXRlWCgkezEwMCAqIHh9JSlgO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJvdGVjdGVkIGdldFN0eWxlKGl0ZW1zQ291bnQ6IG51bWJlcik6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4ge1xuICAgICAgICBjb25zdCBwZXJjZW50ID0gYCR7MTAwIC8gaXRlbXNDb3VudH0lYDtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmxleEJhc2lzOiBwZXJjZW50LFxuICAgICAgICAgICAgbWluV2lkdGg6IHBlcmNlbnQsXG4gICAgICAgICAgICBtYXhXaWR0aDogcGVyY2VudCxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UcmFuc2l0aW9uZWQodHJhbnNpdGlvbmVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMudHJhbnNpdGlvbmVkID0gdHJhbnNpdGlvbmVkO1xuXG4gICAgICAgIGlmICghdHJhbnNpdGlvbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHRoaXMuY29tcHV0ZWRUcmFuc2xhdGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgaXNEaXNhYmxlZChpbmRleDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBpbmRleCA8IHRoaXMuaW5kZXggfHwgaW5kZXggPiB0aGlzLmluZGV4ICsgdGhpcy5pdGVtc0NvdW50O1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkludGVyc2VjdGlvbihcbiAgICAgICAge2ludGVyc2VjdGlvblJhdGlvfTogSW50ZXJzZWN0aW9uT2JzZXJ2ZXJFbnRyeSxcbiAgICAgICAgaW5kZXg6IG51bWJlcixcbiAgICApOiB2b2lkIHtcbiAgICAgICAgaWYgKGludGVyc2VjdGlvblJhdGlvICYmIGludGVyc2VjdGlvblJhdGlvICE9PSAxICYmICF0aGlzLnRyYW5zaXRpb25lZCkge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVJbmRleChpbmRleCAtIE1hdGguZmxvb3IodGhpcy5pdGVtc0NvdW50IC8gMikpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU2Nyb2xsKGRlbHRhOiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmlzTW9iaWxlKSB7XG4gICAgICAgICAgICBpZiAoZGVsdGEgPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5uZXh0KCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMucHJldigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uUGFuKHg6IG51bWJlcik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuY29tcHV0ZWREcmFnZ2FibGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1pbiA9IDEgLSB0aGlzLml0ZW1zLmxlbmd0aCAvIHRoaXMuaXRlbXNDb3VudDtcblxuICAgICAgICB0aGlzLnRyYW5zbGF0ZSA9IHR1aUNsYW1wKHggLyB0aGlzLmVsLmNsaWVudFdpZHRoICsgdGhpcy50cmFuc2xhdGUsIG1pbiwgMCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uU3dpcGUoZGlyZWN0aW9uOiBUdWlTd2lwZURpcmVjdGlvbik6IHZvaWQge1xuICAgICAgICBpZiAoZGlyZWN0aW9uID09PSAnbGVmdCcpIHtcbiAgICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICB9IGVsc2UgaWYgKGRpcmVjdGlvbiA9PT0gJ3JpZ2h0Jykge1xuICAgICAgICAgICAgdGhpcy5wcmV2KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25BdXRvc2Nyb2xsKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUluZGV4KHRoaXMuaW5kZXggPT09IHRoaXMuaXRlbXMubGVuZ3RoIC0gMSA/IDAgOiB0aGlzLmluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgY29tcHV0ZWRUcmFuc2xhdGUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIC10aGlzLmluZGV4IC8gdGhpcy5pdGVtc0NvdW50O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbXB1dGVkRHJhZ2dhYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pc01vYmlsZSB8fCB0aGlzLmRyYWdnYWJsZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUluZGV4KGluZGV4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5pbmRleCA9IHR1aUNsYW1wKGluZGV4LCAwLCB0aGlzLml0ZW1zLmxlbmd0aCAtIDEpO1xuICAgICAgICB0aGlzLmluZGV4Q2hhbmdlLmVtaXQodGhpcy5pbmRleCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJpdGVtcy5jaGFuZ2VzIHwgYXN5bmNcIiAvPlxuPGRpdlxuICAgIGNsYXNzPVwidC1zY3JvbGxlclwiXG4gICAgKHR1aUNhcm91c2VsU2Nyb2xsKT1cIm9uU2Nyb2xsKCRldmVudClcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgd2FJbnRlcnNlY3Rpb25PYnNlcnZlclxuICAgICAgICB3YUludGVyc2VjdGlvblJvb3RcbiAgICAgICAgd2FJbnRlcnNlY3Rpb25Sb290TWFyZ2luPVwiMTAwcHggMTAwMDAwMHB4IDEwMHB4IC01MSVcIlxuICAgICAgICB3YUludGVyc2VjdGlvblRocmVzaG9sZD1cIjAsMVwiXG4gICAgICAgIGNsYXNzPVwidC13cmFwcGVyXCJcbiAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzPVwidC1pdGVtc1wiXG4gICAgICAgICAgICBbc3R5bGUudHJhbnNmb3JtXT1cInRyYW5zZm9ybVwiXG4gICAgICAgICAgICAodHVpQ2Fyb3VzZWxBdXRvc2Nyb2xsKT1cIm9uQXV0b3Njcm9sbCgpXCJcbiAgICAgICAgICAgICh0dWlQYW4pPVwib25QYW4oJGV2ZW50WzBdKVwiXG4gICAgICAgICAgICAodHVpU3dpcGUpPVwib25Td2lwZSgkZXZlbnQuZGlyZWN0aW9uKVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmaWVsZHNldFxuICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zOyBsZXQgaSA9IGluZGV4XCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cInQtaXRlbVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImlzRGlzYWJsZWQoaSlcIlxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cImdldFN0eWxlKGl0ZW1zQ291bnQpXCJcbiAgICAgICAgICAgICAgICAod2FJbnRlcnNlY3Rpb25PYnNlcnZlZSk9XCIkZXZlbnRbMF0gJiYgb25JbnRlcnNlY3Rpb24oJGV2ZW50WzBdLCBpKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciBbbmdUZW1wbGF0ZU91dGxldF09XCJpdGVtXCIgLz5cbiAgICAgICAgICAgIDwvZmllbGRzZXQ+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
157
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2Fyb3VzZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2l0L2NvbXBvbmVudHMvY2Fyb3VzZWwvY2Fyb3VzZWwudGVtcGxhdGUuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBRXBGLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxlQUFlLEVBQ2YsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxFQUNOLFdBQVcsR0FDZCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUMsc0JBQXNCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMxRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDcEQsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3RELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUVwRCxPQUFPLEVBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFDLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ25ELE9BQU8sRUFBQyxnQkFBZ0IsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBQyxRQUFRLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUNsRCxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFFMUQsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0sc0JBQXNCLENBQUM7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NEJBQy9CLE1BQU0sRUFBRSxDQUFDLFVBQVUsQ0FBQzt5QkFDdkI7cUJBQ0osUUFDSzt3QkFDRix1QkFBdUIsRUFBRSxjQUFjO3dCQUN2QyxvQkFBb0IsRUFBRSxXQUFXO3dCQUNqQyxjQUFjLEVBQUUsdUJBQXVCO3dCQUN2QyxZQUFZLEVBQUUsc0JBQXNCO3dCQUNwQyxhQUFhLEVBQUUsdUJBQXVCO3dCQUN0QywyQkFBMkIsRUFBRSxzQkFBc0I7cUJBQ3REOzhCQVVrQixLQUFLO3NCQUR2QixlQUFlO3VCQUFDLE9BQU8sRUFBRSxFQUFDLElBQUksRUFBRSxXQUFXLEVBQUM7Z0JBU3RDLFNBQVM7c0JBRGYsS0FBSztnQkFJQyxVQUFVO3NCQURoQixLQUFLO2dCQUlVLFdBQVc7c0JBRDFCLE1BQU07Z0JBSUksV0FBVztzQkFEckIsS0FBSzt1QkFBQyxPQUFPO2dCQXlCSixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBc3luY1BpcGUsIE5nRm9yT2YsIE5nSWYsIE5nU3R5bGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgdHlwZSB7UXVlcnlMaXN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZHJlbixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbiAgICBUZW1wbGF0ZVJlZixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1dhSW50ZXJzZWN0aW9uT2JzZXJ2ZXJ9IGZyb20gJ0BuZy13ZWItYXBpcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXInO1xuaW1wb3J0IHtFTVBUWV9RVUVSWX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlJdGVtfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvaXRlbSc7XG5pbXBvcnQge1R1aVBhbn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3Bhbic7XG5pbXBvcnQgdHlwZSB7VHVpU3dpcGVEaXJlY3Rpb259IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9zd2lwZSc7XG5pbXBvcnQge1RVSV9TV0lQRV9PUFRJT05TLCBUdWlTd2lwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL3N3aXBlJztcbmltcG9ydCB7VFVJX0lTX01PQklMRX0gZnJvbSAnQHRhaWdhLXVpL2Nkay90b2tlbnMnO1xuaW1wb3J0IHt0dWlJbmplY3RFbGVtZW50fSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL2RvbSc7XG5pbXBvcnQge3R1aUNsYW1wfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21hdGgnO1xuaW1wb3J0IHt0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuXG5pbXBvcnQge1R1aUNhcm91c2VsRGlyZWN0aXZlfSBmcm9tICcuL2Nhcm91c2VsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aUNhcm91c2VsQXV0b3Njcm9sbH0gZnJvbSAnLi9jYXJvdXNlbC1hdXRvc2Nyb2xsLmRpcmVjdGl2ZSc7XG5pbXBvcnQge1R1aUNhcm91c2VsU2Nyb2xsfSBmcm9tICcuL2Nhcm91c2VsLXNjcm9sbC5kaXJlY3RpdmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhcm91c2VsJyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIEFzeW5jUGlwZSxcbiAgICAgICAgTmdGb3JPZixcbiAgICAgICAgTmdJZixcbiAgICAgICAgTmdTdHlsZSxcbiAgICAgICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgICAgICAgVHVpQ2Fyb3VzZWxBdXRvc2Nyb2xsLFxuICAgICAgICBUdWlDYXJvdXNlbFNjcm9sbCxcbiAgICAgICAgVHVpUGFuLFxuICAgICAgICBUdWlTd2lwZSxcbiAgICAgICAgV2FJbnRlcnNlY3Rpb25PYnNlcnZlcixcbiAgICBdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9jYXJvdXNlbC50ZW1wbGF0ZS5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jYXJvdXNlbC5zdHlsZS5sZXNzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IFRVSV9TV0lQRV9PUFRJT05TLCB1c2VWYWx1ZToge3RpbWVvdXQ6IDIwMCwgdGhyZXNob2xkOiAzMH19XSxcbiAgICBob3N0RGlyZWN0aXZlczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBkaXJlY3RpdmU6IFR1aUNhcm91c2VsRGlyZWN0aXZlLFxuICAgICAgICAgICAgaW5wdXRzOiBbJ2R1cmF0aW9uJ10sXG4gICAgICAgIH0sXG4gICAgXSxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX3RyYW5zaXRpb25lZF0nOiAndHJhbnNpdGlvbmVkJyxcbiAgICAgICAgJ1tjbGFzcy5fZHJhZ2dhYmxlXSc6ICdkcmFnZ2FibGUnLFxuICAgICAgICAnKHRvdWNoc3RhcnQpJzogJ29uVHJhbnNpdGlvbmVkKGZhbHNlKScsXG4gICAgICAgICcodG91Y2hlbmQpJzogJ29uVHJhbnNpdGlvbmVkKHRydWUpJyxcbiAgICAgICAgJyhtb3VzZWRvd24pJzogJ29uVHJhbnNpdGlvbmVkKGZhbHNlKScsXG4gICAgICAgICcoZG9jdW1lbnQ6bW91c2V1cC5zaWxlbnQpJzogJ29uVHJhbnNpdGlvbmVkKHRydWUpJyxcbiAgICB9LFxufSlcbmV4cG9ydCBjbGFzcyBUdWlDYXJvdXNlbENvbXBvbmVudCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbCA9IHR1aUluamVjdEVsZW1lbnQoKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG4gICAgcHJpdmF0ZSByZWFkb25seSBpc01vYmlsZSA9IGluamVjdChUVUlfSVNfTU9CSUxFKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdGl2ZSA9IGluamVjdChUdWlDYXJvdXNlbERpcmVjdGl2ZSk7XG4gICAgcHJpdmF0ZSB0cmFuc2xhdGUgPSAwO1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihUdWlJdGVtLCB7cmVhZDogVGVtcGxhdGVSZWZ9KVxuICAgIHByb3RlY3RlZCByZWFkb25seSBpdGVtczogUXVlcnlMaXN0PFRlbXBsYXRlUmVmPFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4gPVxuICAgICAgICBFTVBUWV9RVUVSWTtcblxuICAgIHByb3RlY3RlZCB0cmFuc2l0aW9uZWQgPSB0cnVlO1xuXG4gICAgcHJvdGVjdGVkIGluZGV4ID0gMDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRyYWdnYWJsZSA9IGZhbHNlO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXNDb3VudCA9IDE7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaW5kZXhDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcblxuICAgIEBJbnB1dCgnaW5kZXgnKVxuICAgIHB1YmxpYyBzZXQgaW5kZXhTZXR0ZXIoaW5kZXg6IG51bWJlcikge1xuICAgICAgICB0aGlzLmluZGV4ID0gaW5kZXg7XG4gICAgICAgIHRoaXMuZGlyZWN0aXZlLmR1cmF0aW9uID0gTmFOO1xuICAgIH1cblxuICAgIHB1YmxpYyBuZXh0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pdGVtcyAmJiB0aGlzLmluZGV4ID09PSB0aGlzLml0ZW1zLmxlbmd0aCAtIHRoaXMuaXRlbXNDb3VudCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbmRleCh0aGlzLmluZGV4ICsgMSk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZXYoKTogdm9pZCB7XG4gICAgICAgIHRoaXMudXBkYXRlSW5kZXgodGhpcy5pbmRleCAtIDEpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgdHJhbnNmb3JtKCk6IHN0cmluZyB7XG4gICAgICAgIGNvbnN0IHggPSB0aGlzLnRyYW5zaXRpb25lZCA/IHRoaXMuY29tcHV0ZWRUcmFuc2xhdGUgOiB0aGlzLnRyYW5zbGF0ZTtcblxuICAgICAgICByZXR1cm4gYHRyYW5zbGF0ZVgoJHsxMDAgKiB4fSUpYDtcbiAgICB9XG5cbiAgICBAdHVpUHVyZVxuICAgIHByb3RlY3RlZCBnZXRTdHlsZShpdGVtc0NvdW50OiBudW1iZXIpOiBQYXJ0aWFsPENTU1N0eWxlRGVjbGFyYXRpb24+IHtcbiAgICAgICAgY29uc3QgcGVyY2VudCA9IGAkezEwMCAvIGl0ZW1zQ291bnR9JWA7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGZsZXhCYXNpczogcGVyY2VudCxcbiAgICAgICAgICAgIG1pbldpZHRoOiBwZXJjZW50LFxuICAgICAgICAgICAgbWF4V2lkdGg6IHBlcmNlbnQsXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVHJhbnNpdGlvbmVkKHRyYW5zaXRpb25lZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLnRyYW5zaXRpb25lZCA9IHRyYW5zaXRpb25lZDtcblxuICAgICAgICBpZiAoIXRyYW5zaXRpb25lZCkge1xuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUgPSB0aGlzLmNvbXB1dGVkVHJhbnNsYXRlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGlzRGlzYWJsZWQoaW5kZXg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaW5kZXggPCB0aGlzLmluZGV4IHx8IGluZGV4ID4gdGhpcy5pbmRleCArIHRoaXMuaXRlbXNDb3VudDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JbnRlcnNlY3Rpb24oXG4gICAgICAgIHtpbnRlcnNlY3Rpb25SYXRpb306IEludGVyc2VjdGlvbk9ic2VydmVyRW50cnksXG4gICAgICAgIGluZGV4OiBudW1iZXIsXG4gICAgKTogdm9pZCB7XG4gICAgICAgIGlmIChpbnRlcnNlY3Rpb25SYXRpbyAmJiBpbnRlcnNlY3Rpb25SYXRpbyA+PSAwLjUgJiYgIXRoaXMudHJhbnNpdGlvbmVkKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUluZGV4KHRoaXMuaW5kZXggPCBpbmRleCA/IGluZGV4IC0gdGhpcy5pdGVtc0NvdW50ICsgMSA6IGluZGV4KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblNjcm9sbChkZWx0YTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5pc01vYmlsZSkge1xuICAgICAgICAgICAgaWYgKGRlbHRhID4gMCkge1xuICAgICAgICAgICAgICAgIHRoaXMubmV4dCgpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnByZXYoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblBhbih4OiBudW1iZXIpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbXB1dGVkRHJhZ2dhYmxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtaW4gPSAxIC0gdGhpcy5pdGVtcy5sZW5ndGggLyB0aGlzLml0ZW1zQ291bnQ7XG5cbiAgICAgICAgdGhpcy50cmFuc2xhdGUgPSB0dWlDbGFtcCh4IC8gdGhpcy5lbC5jbGllbnRXaWR0aCArIHRoaXMudHJhbnNsYXRlLCBtaW4sIDApO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN3aXBlKGRpcmVjdGlvbjogVHVpU3dpcGVEaXJlY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgaWYgKGRpcmVjdGlvbiA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgICB0aGlzLm5leHQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChkaXJlY3Rpb24gPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgIHRoaXMucHJldigpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uQXV0b3Njcm9sbCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVJbmRleCh0aGlzLmluZGV4ID09PSB0aGlzLml0ZW1zLmxlbmd0aCAtIDEgPyAwIDogdGhpcy5pbmRleCArIDEpO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0IGNvbXB1dGVkVHJhbnNsYXRlKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiAtdGhpcy5pbmRleCAvIHRoaXMuaXRlbXNDb3VudDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBjb21wdXRlZERyYWdnYWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaXNNb2JpbGUgfHwgdGhpcy5kcmFnZ2FibGU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJbmRleChpbmRleDogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaW5kZXggPSB0dWlDbGFtcChpbmRleCwgMCwgdGhpcy5pdGVtcy5sZW5ndGggLSAxKTtcbiAgICAgICAgdGhpcy5pbmRleENoYW5nZS5lbWl0KHRoaXMuaW5kZXgpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG59XG4iLCI8bmctY29udGFpbmVyICpuZ0lmPVwiaXRlbXMuY2hhbmdlcyB8IGFzeW5jXCIgLz5cbjxkaXZcbiAgICBjbGFzcz1cInQtc2Nyb2xsZXJcIlxuICAgICh0dWlDYXJvdXNlbFNjcm9sbCk9XCJvblNjcm9sbCgkZXZlbnQpXCJcbj5cbiAgICA8ZGl2XG4gICAgICAgIHdhSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgICAgICAgd2FJbnRlcnNlY3Rpb25UaHJlc2hvbGQ9XCIwLjVcIlxuICAgICAgICBjbGFzcz1cInQtd3JhcHBlclwiXG4gICAgPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICBjbGFzcz1cInQtaXRlbXNcIlxuICAgICAgICAgICAgW3N0eWxlLnRyYW5zZm9ybV09XCJ0cmFuc2Zvcm1cIlxuICAgICAgICAgICAgKHR1aUNhcm91c2VsQXV0b3Njcm9sbCk9XCJvbkF1dG9zY3JvbGwoKVwiXG4gICAgICAgICAgICAodHVpUGFuKT1cIm9uUGFuKCRldmVudFswXSlcIlxuICAgICAgICAgICAgKHR1aVN3aXBlKT1cIm9uU3dpcGUoJGV2ZW50LmRpcmVjdGlvbilcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8ZmllbGRzZXRcbiAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgaXRlbSBvZiBpdGVtczsgbGV0IGkgPSBpbmRleFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWl0ZW1cIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkKGkpXCJcbiAgICAgICAgICAgICAgICBbbmdTdHlsZV09XCJnZXRTdHlsZShpdGVtc0NvdW50KVwiXG4gICAgICAgICAgICAgICAgKHdhSW50ZXJzZWN0aW9uT2JzZXJ2ZWUpPVwiJGV2ZW50WzBdICYmIG9uSW50ZXJzZWN0aW9uKCRldmVudFswXSwgaSlcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgW25nVGVtcGxhdGVPdXRsZXRdPVwiaXRlbVwiIC8+XG4gICAgICAgICAgICA8L2ZpZWxkc2V0PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
@@ -7,7 +7,7 @@ import * as i2 from '@ng-web-apis/intersection-observer';
7
7
  import { WaIntersectionObserver } from '@ng-web-apis/intersection-observer';
8
8
  import { TUI_FALSE_HANDLER, TUI_TRUE_HANDLER, EMPTY_QUERY } from '@taiga-ui/cdk/constants';
9
9
  import { TuiPan } from '@taiga-ui/cdk/directives/pan';
10
- import { TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
10
+ import { TUI_SWIPE_OPTIONS, TuiSwipe } from '@taiga-ui/cdk/directives/swipe';
11
11
  import { TUI_IS_MOBILE } from '@taiga-ui/cdk/tokens';
12
12
  import { tuiInjectElement } from '@taiga-ui/cdk/utils/dom';
13
13
  import { tuiClamp } from '@taiga-ui/cdk/utils/math';
@@ -128,8 +128,8 @@ class TuiCarouselComponent {
128
128
  return index < this.index || index > this.index + this.itemsCount;
129
129
  }
130
130
  onIntersection({ intersectionRatio }, index) {
131
- if (intersectionRatio && intersectionRatio !== 1 && !this.transitioned) {
132
- this.updateIndex(index - Math.floor(this.itemsCount / 2));
131
+ if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {
132
+ this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);
133
133
  }
134
134
  }
135
135
  onScroll(delta) {
@@ -172,7 +172,7 @@ class TuiCarouselComponent {
172
172
  this.cdr.markForCheck();
173
173
  }
174
174
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
175
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { draggable: "draggable", itemsCount: "itemsCount", indexSetter: ["index", "indexSetter"] }, outputs: { indexChange: "indexChange" }, host: { listeners: { "touchstart": "onTransitioned(false)", "touchend": "onTransitioned(true)", "mousedown": "onTransitioned(false)", "document:mouseup.silent": "onTransitioned(true)" }, properties: { "class._transitioned": "transitioned", "class._draggable": "draggable" } }, queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: TuiCarouselDirective, inputs: ["duration", "duration"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionRoot\n waIntersectionRootMargin=\"100px 1000000px 100px -51%\"\n waIntersectionThreshold=\"0,1\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiCarouselAutoscroll, selector: "[tuiCarouselAutoscroll]", outputs: ["tuiCarouselAutoscroll"] }, { kind: "directive", type: TuiCarouselScroll, selector: "[tuiCarouselScroll]", outputs: ["tuiCarouselScroll"] }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["waIntersectionRootMargin", "waIntersectionThreshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }, { kind: "directive", type: i2.WaIntersectionRoot, selector: "[waIntersectionRoot]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
175
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { draggable: "draggable", itemsCount: "itemsCount", indexSetter: ["index", "indexSetter"] }, outputs: { indexChange: "indexChange" }, host: { listeners: { "touchstart": "onTransitioned(false)", "touchend": "onTransitioned(true)", "mousedown": "onTransitioned(false)", "document:mouseup.silent": "onTransitioned(true)" }, properties: { "class._transitioned": "transitioned", "class._draggable": "draggable" } }, providers: [{ provide: TUI_SWIPE_OPTIONS, useValue: { timeout: 200, threshold: 30 } }], queries: [{ propertyName: "items", predicate: TuiItem, read: TemplateRef }], hostDirectives: [{ directive: TuiCarouselDirective, inputs: ["duration", "duration"] }], ngImport: i0, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none;touch-action:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: TuiCarouselAutoscroll, selector: "[tuiCarouselAutoscroll]", outputs: ["tuiCarouselAutoscroll"] }, { kind: "directive", type: TuiCarouselScroll, selector: "[tuiCarouselScroll]", outputs: ["tuiCarouselScroll"] }, { kind: "directive", type: TuiPan, selector: "[tuiPan]", outputs: ["tuiPan"] }, { kind: "directive", type: TuiSwipe, selector: "[tuiSwipe]", outputs: ["tuiSwipe"] }, { kind: "directive", type: i2.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["waIntersectionRootMargin", "waIntersectionThreshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i2.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
176
176
  }
177
177
  __decorate([
178
178
  tuiPure
@@ -190,7 +190,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
190
190
  TuiPan,
191
191
  TuiSwipe,
192
192
  WaIntersectionObserver,
193
- ], changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [
193
+ ], changeDetection: ChangeDetectionStrategy.OnPush, providers: [{ provide: TUI_SWIPE_OPTIONS, useValue: { timeout: 200, threshold: 30 } }], hostDirectives: [
194
194
  {
195
195
  directive: TuiCarouselDirective,
196
196
  inputs: ['duration'],
@@ -202,7 +202,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
202
202
  '(touchend)': 'onTransitioned(true)',
203
203
  '(mousedown)': 'onTransitioned(false)',
204
204
  '(document:mouseup.silent)': 'onTransitioned(true)',
205
- }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionRoot\n waIntersectionRootMargin=\"100px 1000000px 100px -51%\"\n waIntersectionThreshold=\"0,1\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"] }]
205
+ }, template: "<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n", styles: [":host{position:relative;display:block;overflow:hidden}:host._draggable{-webkit-user-select:none;user-select:none}:host._draggable:hover{cursor:grab}:host._draggable:active{cursor:grabbing}.t-items{display:flex}:host._transitioned .t-items{transition-property:transform;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out}::ng-deep [tuiCarouselButtons] [tuiIconButton]{border-radius:100%}.t-item{display:flex;flex-direction:column;justify-content:center;padding:var(--tui-carousel-padding, 0 1.25rem);flex:1;min-inline-size:100%;max-inline-size:100%;box-sizing:border-box;border:none;margin:0}.t-wrapper{position:sticky;left:0;right:0;min-inline-size:100%;overflow:hidden}.t-scroller{scrollbar-width:none;-ms-overflow-style:none;display:flex;overflow:auto;overscroll-behavior-x:none;touch-action:none}.t-scroller::-webkit-scrollbar,.t-scroller::-webkit-scrollbar-thumb{display:none}.t-scroller:before,.t-scroller:after{content:\"\";display:block;min-inline-size:1rem}\n"] }]
206
206
  }], propDecorators: { items: [{
207
207
  type: ContentChildren,
208
208
  args: [TuiItem, { read: TemplateRef }]
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-kit-components-carousel.mjs","sources":["../../../projects/kit/components/carousel/carousel.directive.ts","../../../projects/kit/components/carousel/carousel-autoscroll.directive.ts","../../../projects/kit/components/carousel/carousel-scroll.directive.ts","../../../projects/kit/components/carousel/carousel.component.ts","../../../projects/kit/components/carousel/carousel.template.html","../../../projects/kit/components/carousel/carousel-buttons.directive.ts","../../../projects/kit/components/carousel/carousel.ts","../../../projects/kit/components/carousel/taiga-ui-kit-components-carousel.ts"],"sourcesContent":["import {Directive, inject, Input} from '@angular/core';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {BehaviorSubject, combineLatest, interval, map, merge, Observable} from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class TuiCarouselDirective extends Observable<unknown> {\n private readonly el = tuiInjectElement();\n private readonly visible$ = inject(WA_PAGE_VISIBILITY);\n private readonly duration$ = new BehaviorSubject(0);\n private readonly running$ = merge(\n tuiTypedFromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n tuiTypedFromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n this.visible$,\n );\n\n private readonly output$ = combineLatest([this.duration$, this.running$]).pipe(\n tuiIfMap(\n ([duration]) => interval(duration),\n (values) => values.every(Boolean),\n ),\n );\n\n constructor() {\n super((subscriber) => this.output$.subscribe(subscriber));\n }\n\n @Input()\n public set duration(duration: number) {\n this.duration$.next(Number.isNaN(duration) ? this.duration$.value : duration);\n }\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiCarouselDirective} from './carousel.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselAutoscroll]',\n})\nexport class TuiCarouselAutoscroll {\n @Output()\n public readonly tuiCarouselAutoscroll = inject(TuiCarouselDirective);\n}\n","import {Directive, Output} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, tap, throttleTime} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselScroll]',\n})\nexport class TuiCarouselScroll {\n private readonly el = tuiInjectElement();\n\n @Output()\n public readonly tuiCarouselScroll = tuiTypedFromEvent(this.el, 'wheel').pipe(\n filter(({deltaX}) => Math.abs(deltaX) > 20),\n throttleTime(500, tuiZonefreeScheduler()),\n map(({deltaX}) => Math.sign(deltaX)),\n tap(() => {\n // So we always have space to scroll and overflow-behavior saves us from back nav\n this.el.scrollLeft = 10;\n }),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgStyle, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiSwipeDirection} from '@taiga-ui/cdk/directives/swipe';\nimport {TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-carousel',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgStyle,\n NgTemplateOutlet,\n TuiCarouselAutoscroll,\n TuiCarouselScroll,\n TuiPan,\n TuiSwipe,\n WaIntersectionObserver,\n ],\n templateUrl: './carousel.template.html',\n styleUrls: ['./carousel.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: TuiCarouselDirective,\n inputs: ['duration'],\n },\n ],\n host: {\n '[class._transitioned]': 'transitioned',\n '[class._draggable]': 'draggable',\n '(touchstart)': 'onTransitioned(false)',\n '(touchend)': 'onTransitioned(true)',\n '(mousedown)': 'onTransitioned(false)',\n '(document:mouseup.silent)': 'onTransitioned(true)',\n },\n})\nexport class TuiCarouselComponent {\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly directive = inject(TuiCarouselDirective);\n private translate = 0;\n\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected transitioned = true;\n\n protected index = 0;\n\n @Input()\n public draggable = false;\n\n @Input()\n public itemsCount = 1;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n @Input('index')\n public set indexSetter(index: number) {\n this.index = index;\n this.directive.duration = NaN;\n }\n\n public next(): void {\n if (this.items && this.index === this.items.length - this.itemsCount) {\n return;\n }\n\n this.updateIndex(this.index + 1);\n }\n\n public prev(): void {\n this.updateIndex(this.index - 1);\n }\n\n protected get transform(): string {\n const x = this.transitioned ? this.computedTranslate : this.translate;\n\n return `translateX(${100 * x}%)`;\n }\n\n @tuiPure\n protected getStyle(itemsCount: number): Partial<CSSStyleDeclaration> {\n const percent = `${100 / itemsCount}%`;\n\n return {\n flexBasis: percent,\n minWidth: percent,\n maxWidth: percent,\n };\n }\n\n protected onTransitioned(transitioned: boolean): void {\n this.transitioned = transitioned;\n\n if (!transitioned) {\n this.translate = this.computedTranslate;\n }\n }\n\n protected isDisabled(index: number): boolean {\n return index < this.index || index > this.index + this.itemsCount;\n }\n\n protected onIntersection(\n {intersectionRatio}: IntersectionObserverEntry,\n index: number,\n ): void {\n if (intersectionRatio && intersectionRatio !== 1 && !this.transitioned) {\n this.updateIndex(index - Math.floor(this.itemsCount / 2));\n }\n }\n\n protected onScroll(delta: number): void {\n if (!this.isMobile) {\n if (delta > 0) {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n\n protected onPan(x: number): void {\n if (!this.computedDraggable) {\n return;\n }\n\n const min = 1 - this.items.length / this.itemsCount;\n\n this.translate = tuiClamp(x / this.el.clientWidth + this.translate, min, 0);\n }\n\n protected onSwipe(direction: TuiSwipeDirection): void {\n if (direction === 'left') {\n this.next();\n } else if (direction === 'right') {\n this.prev();\n }\n }\n\n protected onAutoscroll(): void {\n this.updateIndex(this.index === this.items.length - 1 ? 0 : this.index + 1);\n }\n\n private get computedTranslate(): number {\n return -this.index / this.itemsCount;\n }\n\n private get computedDraggable(): boolean {\n return this.isMobile || this.draggable;\n }\n\n private updateIndex(index: number): void {\n this.index = tuiClamp(index, 0, this.items.length - 1);\n this.indexChange.emit(this.index);\n this.cdr.markForCheck();\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionRoot\n waIntersectionRootMargin=\"100px 1000000px 100px -51%\"\n waIntersectionThreshold=\"0,1\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n","import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselButtons]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'secondary',\n size: 'm',\n }),\n ],\n})\nexport class TuiCarouselButtons {}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselButtons} from './carousel-buttons.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\nexport const TuiCarousel = [\n TuiItem,\n TuiCarouselComponent,\n TuiCarouselDirective,\n TuiCarouselAutoscroll,\n TuiCarouselButtons,\n TuiCarouselScroll,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;AAOA,MAGa,oBAAqB,SAAQ,UAAmB,CAAA;AAmBzD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,CAAC,CAAC,UAAU,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;QAnB7C,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,kBAAkB,CAAC,CAAC;AACtC,QAAA,IAAA,CAAA,SAAS,GAAG,IAAI,eAAe,CAAC,CAAC,CAAC,CAAC;AACnC,QAAA,IAAA,CAAA,QAAQ,GAAG,KAAK,CAC7B,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EACrE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EACrE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EAClE,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,EACpE,IAAI,CAAC,QAAQ,CAChB,CAAC;AAEe,QAAA,IAAA,CAAA,OAAO,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAC1E,QAAQ,CACJ,CAAC,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,QAAQ,CAAC,EAClC,CAAC,MAAM,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CACpC,CACJ,CAAC;KAID;IAED,IACW,QAAQ,CAAC,QAAgB,EAAA;QAChC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC;KACjF;+GA1BQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAHhC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AACnB,iBAAA,CAAA;0EAyBc,QAAQ,EAAA,CAAA;sBADlB,KAAK;;;AC7BV,MAIa,qBAAqB,CAAA;AAJlC,IAAA,WAAA,GAAA;AAMoB,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;AACxE,KAAA;+GAHY,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAArB,qBAAqB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,yBAAA,EAAA,OAAA,EAAA,EAAA,qBAAA,EAAA,uBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAArB,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,yBAAyB;AACtC,iBAAA,CAAA;8BAGmB,qBAAqB,EAAA,CAAA;sBADpC,MAAM;;;ACJX,MAIa,iBAAiB,CAAA;AAJ9B,IAAA,WAAA,GAAA;QAKqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;QAGzB,IAAiB,CAAA,iBAAA,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CACxE,MAAM,CAAC,CAAC,EAAC,MAAM,EAAC,KAAK,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAC3C,YAAY,CAAC,GAAG,EAAE,oBAAoB,EAAE,CAAC,EACzC,GAAG,CAAC,CAAC,EAAC,MAAM,EAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EACpC,GAAG,CAAC,MAAK;;AAEL,YAAA,IAAI,CAAC,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;SAC3B,CAAC,CACL,CAAC;AACL,KAAA;+GAbY,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAAjB,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAJ7B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,qBAAqB;AAClC,iBAAA,CAAA;8BAKmB,iBAAiB,EAAA,CAAA;sBADhC,MAAM;;;ACgBX,MAiCa,oBAAoB,CAAA;AAjCjC,IAAA,WAAA,GAAA;QAkCqB,IAAE,CAAA,EAAA,GAAG,gBAAgB,EAAE,CAAC;AACxB,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAC;AAChC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC;AACjC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAS,CAAA,SAAA,GAAG,CAAC,CAAC;QAGH,IAAK,CAAA,KAAA,GACpB,WAAW,CAAC;QAEN,IAAY,CAAA,YAAA,GAAG,IAAI,CAAC;QAEpB,IAAK,CAAA,KAAA,GAAG,CAAC,CAAC;QAGb,IAAS,CAAA,SAAA,GAAG,KAAK,CAAC;QAGlB,IAAU,CAAA,UAAA,GAAG,CAAC,CAAC;AAGN,QAAA,IAAA,CAAA,WAAW,GAAG,IAAI,YAAY,EAAU,CAAC;AAuG5D,KAAA;IArGG,IACW,WAAW,CAAC,KAAa,EAAA;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,GAAG,CAAC;KACjC;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE;YAClE,OAAO;AACV,SAAA;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KACpC;IAEM,IAAI,GAAA;QACP,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KACpC;AAED,IAAA,IAAc,SAAS,GAAA;AACnB,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;AAEtE,QAAA,OAAO,CAAc,WAAA,EAAA,GAAG,GAAG,CAAC,IAAI,CAAC;KACpC;AAGS,IAAA,QAAQ,CAAC,UAAkB,EAAA;AACjC,QAAA,MAAM,OAAO,GAAG,CAAA,EAAG,GAAG,GAAG,UAAU,GAAG,CAAC;QAEvC,OAAO;AACH,YAAA,SAAS,EAAE,OAAO;AAClB,YAAA,QAAQ,EAAE,OAAO;AACjB,YAAA,QAAQ,EAAE,OAAO;SACpB,CAAC;KACL;AAES,IAAA,cAAc,CAAC,YAAqB,EAAA;AAC1C,QAAA,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,IAAI,CAAC,YAAY,EAAE;AACf,YAAA,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;AAC3C,SAAA;KACJ;AAES,IAAA,UAAU,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;KACrE;AAES,IAAA,cAAc,CACpB,EAAC,iBAAiB,EAA4B,EAC9C,KAAa,EAAA;QAEb,IAAI,iBAAiB,IAAI,iBAAiB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;AACpE,YAAA,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC;AAC7D,SAAA;KACJ;AAES,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,KAAK,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,aAAA;AAAM,iBAAA;gBACH,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,aAAA;AACJ,SAAA;KACJ;AAES,IAAA,KAAK,CAAC,CAAS,EAAA;AACrB,QAAA,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,OAAO;AACV,SAAA;AAED,QAAA,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAEpD,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;KAC/E;AAES,IAAA,OAAO,CAAC,SAA4B,EAAA;QAC1C,IAAI,SAAS,KAAK,MAAM,EAAE;YACtB,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;aAAM,IAAI,SAAS,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;AACf,SAAA;KACJ;IAES,YAAY,GAAA;QAClB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;KAC/E;AAED,IAAA,IAAY,iBAAiB,GAAA;QACzB,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;KACxC;AAED,IAAA,IAAY,iBAAiB,GAAA;AACzB,QAAA,OAAO,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC;KAC1C;AAEO,IAAA,WAAW,CAAC,KAAa,EAAA;AAC7B,QAAA,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClC,QAAA,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;KAC3B;+GA5HQ,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;mGAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,UAAA,EAAA,YAAA,EAAA,WAAA,EAAA,CAAA,OAAA,EAAA,aAAA,CAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,YAAA,EAAA,uBAAA,EAAA,UAAA,EAAA,sBAAA,EAAA,WAAA,EAAA,uBAAA,EAAA,yBAAA,EAAA,sBAAA,EAAA,EAAA,UAAA,EAAA,EAAA,qBAAA,EAAA,cAAA,EAAA,kBAAA,EAAA,WAAA,EAAA,EAAA,EAAA,OAAA,EAAA,CAAA,EAAA,YAAA,EAAA,OAAA,EAAA,SAAA,EAOZ,OAAO,EAAS,IAAA,EAAA,WAAW,sHCpEhD,ihCA+BA,EAAA,MAAA,EAAA,CAAA,w9BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDCQ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,kBAAA,EAAA,MAAA,EAAA,CAAA,SAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACP,IAAI,EACJ,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,OAAO,EACP,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,gBAAgB,EAChB,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,qBAAqB,wGACrB,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACjB,MAAM,EAAA,QAAA,EAAA,UAAA,EAAA,OAAA,EAAA,CAAA,QAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACN,QAAQ,EAAA,QAAA,EAAA,YAAA,EAAA,OAAA,EAAA,CAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,+BAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,MAAA,EAAA,CAAA,0BAAA,EAAA,yBAAA,CAAA,EAAA,QAAA,EAAA,CAAA,sBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,sBAAA,EAAA,QAAA,EAAA,0BAAA,EAAA,OAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,kBAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA,EAAA;;AAsEF,UAAA,CAAA;IADT,OAAO;AASP,CAAA,EAAA,oBAAA,CAAA,SAAA,EAAA,UAAA,EAAA,IAAA,CAAA,CAAA;4FAzDQ,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBAjChC,SAAS;iCACM,IAAI,EAAA,QAAA,EACN,cAAc,EACf,OAAA,EAAA;wBACL,SAAS;wBACT,OAAO;wBACP,IAAI;wBACJ,OAAO;wBACP,gBAAgB;wBAChB,qBAAqB;wBACrB,iBAAiB;wBACjB,MAAM;wBACN,QAAQ;wBACR,sBAAsB;qBACzB,EAGgB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAC/B,cAAA,EAAA;AACZ,wBAAA;AACI,4BAAA,SAAS,EAAE,oBAAoB;4BAC/B,MAAM,EAAE,CAAC,UAAU,CAAC;AACvB,yBAAA;qBACJ,EACK,IAAA,EAAA;AACF,wBAAA,uBAAuB,EAAE,cAAc;AACvC,wBAAA,oBAAoB,EAAE,WAAW;AACjC,wBAAA,cAAc,EAAE,uBAAuB;AACvC,wBAAA,YAAY,EAAE,sBAAsB;AACpC,wBAAA,aAAa,EAAE,uBAAuB;AACtC,wBAAA,2BAA2B,EAAE,sBAAsB;AACtD,qBAAA,EAAA,QAAA,EAAA,ihCAAA,EAAA,MAAA,EAAA,CAAA,w9BAAA,CAAA,EAAA,CAAA;8BAUkB,KAAK,EAAA,CAAA;sBADvB,eAAe;AAAC,gBAAA,IAAA,EAAA,CAAA,OAAO,EAAE,EAAC,IAAI,EAAE,WAAW,EAAC,CAAA;gBAStC,SAAS,EAAA,CAAA;sBADf,KAAK;gBAIC,UAAU,EAAA,CAAA;sBADhB,KAAK;gBAIU,WAAW,EAAA,CAAA;sBAD1B,MAAM;gBAII,WAAW,EAAA,CAAA;sBADrB,KAAK;uBAAC,OAAO,CAAA;gBAyBJ,QAAQ,EAAA,EAAA,EAAA,EAAA,CAAA;;AE3GtB,MAUa,kBAAkB,CAAA;+GAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,kBAAkB,EAPhB,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,sBAAA,EAAA,SAAA,EAAA;AACP,YAAA,wBAAwB,CAAC;AACrB,gBAAA,UAAU,EAAE,WAAW;AACvB,gBAAA,IAAI,EAAE,GAAG;aACZ,CAAC;AACL,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;4FAEQ,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAV9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,QAAQ,EAAE,sBAAsB;AAChC,oBAAA,SAAS,EAAE;AACP,wBAAA,wBAAwB,CAAC;AACrB,4BAAA,UAAU,EAAE,WAAW;AACvB,4BAAA,IAAI,EAAE,GAAG;yBACZ,CAAC;AACL,qBAAA;AACJ,iBAAA,CAAA;;;ACJY,MAAA,WAAW,GAAG;IACvB,OAAO;IACP,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;IACrB,kBAAkB;IAClB,iBAAiB;;;ACdrB;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-kit-components-carousel.mjs","sources":["../../../projects/kit/components/carousel/carousel.directive.ts","../../../projects/kit/components/carousel/carousel-autoscroll.directive.ts","../../../projects/kit/components/carousel/carousel-scroll.directive.ts","../../../projects/kit/components/carousel/carousel.component.ts","../../../projects/kit/components/carousel/carousel.template.html","../../../projects/kit/components/carousel/carousel-buttons.directive.ts","../../../projects/kit/components/carousel/carousel.ts","../../../projects/kit/components/carousel/taiga-ui-kit-components-carousel.ts"],"sourcesContent":["import {Directive, inject, Input} from '@angular/core';\nimport {WA_PAGE_VISIBILITY} from '@ng-web-apis/common';\nimport {TUI_FALSE_HANDLER, TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {tuiIfMap, tuiTypedFromEvent} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {BehaviorSubject, combineLatest, interval, map, merge, Observable} from 'rxjs';\n\n@Directive({\n standalone: true,\n})\nexport class TuiCarouselDirective extends Observable<unknown> {\n private readonly el = tuiInjectElement();\n private readonly visible$ = inject(WA_PAGE_VISIBILITY);\n private readonly duration$ = new BehaviorSubject(0);\n private readonly running$ = merge(\n tuiTypedFromEvent(this.el, 'mouseenter').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchstart').pipe(map(TUI_FALSE_HANDLER)),\n tuiTypedFromEvent(this.el, 'touchend').pipe(map(TUI_TRUE_HANDLER)),\n tuiTypedFromEvent(this.el, 'mouseleave').pipe(map(TUI_TRUE_HANDLER)),\n this.visible$,\n );\n\n private readonly output$ = combineLatest([this.duration$, this.running$]).pipe(\n tuiIfMap(\n ([duration]) => interval(duration),\n (values) => values.every(Boolean),\n ),\n );\n\n constructor() {\n super((subscriber) => this.output$.subscribe(subscriber));\n }\n\n @Input()\n public set duration(duration: number) {\n this.duration$.next(Number.isNaN(duration) ? this.duration$.value : duration);\n }\n}\n","import {Directive, inject, Output} from '@angular/core';\n\nimport {TuiCarouselDirective} from './carousel.directive';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselAutoscroll]',\n})\nexport class TuiCarouselAutoscroll {\n @Output()\n public readonly tuiCarouselAutoscroll = inject(TuiCarouselDirective);\n}\n","import {Directive, Output} from '@angular/core';\nimport {tuiTypedFromEvent, tuiZonefreeScheduler} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {filter, map, tap, throttleTime} from 'rxjs';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselScroll]',\n})\nexport class TuiCarouselScroll {\n private readonly el = tuiInjectElement();\n\n @Output()\n public readonly tuiCarouselScroll = tuiTypedFromEvent(this.el, 'wheel').pipe(\n filter(({deltaX}) => Math.abs(deltaX) > 20),\n throttleTime(500, tuiZonefreeScheduler()),\n map(({deltaX}) => Math.sign(deltaX)),\n tap(() => {\n // So we always have space to scroll and overflow-behavior saves us from back nav\n this.el.scrollLeft = 10;\n }),\n );\n}\n","import {AsyncPipe, NgForOf, NgIf, NgStyle, NgTemplateOutlet} from '@angular/common';\nimport type {QueryList} from '@angular/core';\nimport {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n EventEmitter,\n inject,\n Input,\n Output,\n TemplateRef,\n} from '@angular/core';\nimport {WaIntersectionObserver} from '@ng-web-apis/intersection-observer';\nimport {EMPTY_QUERY} from '@taiga-ui/cdk/constants';\nimport {TuiItem} from '@taiga-ui/cdk/directives/item';\nimport {TuiPan} from '@taiga-ui/cdk/directives/pan';\nimport type {TuiSwipeDirection} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_SWIPE_OPTIONS, TuiSwipe} from '@taiga-ui/cdk/directives/swipe';\nimport {TUI_IS_MOBILE} from '@taiga-ui/cdk/tokens';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiClamp} from '@taiga-ui/cdk/utils/math';\nimport {tuiPure} from '@taiga-ui/cdk/utils/miscellaneous';\n\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\n@Component({\n standalone: true,\n selector: 'tui-carousel',\n imports: [\n AsyncPipe,\n NgForOf,\n NgIf,\n NgStyle,\n NgTemplateOutlet,\n TuiCarouselAutoscroll,\n TuiCarouselScroll,\n TuiPan,\n TuiSwipe,\n WaIntersectionObserver,\n ],\n templateUrl: './carousel.template.html',\n styleUrls: ['./carousel.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [{provide: TUI_SWIPE_OPTIONS, useValue: {timeout: 200, threshold: 30}}],\n hostDirectives: [\n {\n directive: TuiCarouselDirective,\n inputs: ['duration'],\n },\n ],\n host: {\n '[class._transitioned]': 'transitioned',\n '[class._draggable]': 'draggable',\n '(touchstart)': 'onTransitioned(false)',\n '(touchend)': 'onTransitioned(true)',\n '(mousedown)': 'onTransitioned(false)',\n '(document:mouseup.silent)': 'onTransitioned(true)',\n },\n})\nexport class TuiCarouselComponent {\n private readonly el = tuiInjectElement();\n private readonly cdr = inject(ChangeDetectorRef);\n private readonly isMobile = inject(TUI_IS_MOBILE);\n private readonly directive = inject(TuiCarouselDirective);\n private translate = 0;\n\n @ContentChildren(TuiItem, {read: TemplateRef})\n protected readonly items: QueryList<TemplateRef<Record<string, unknown>>> =\n EMPTY_QUERY;\n\n protected transitioned = true;\n\n protected index = 0;\n\n @Input()\n public draggable = false;\n\n @Input()\n public itemsCount = 1;\n\n @Output()\n public readonly indexChange = new EventEmitter<number>();\n\n @Input('index')\n public set indexSetter(index: number) {\n this.index = index;\n this.directive.duration = NaN;\n }\n\n public next(): void {\n if (this.items && this.index === this.items.length - this.itemsCount) {\n return;\n }\n\n this.updateIndex(this.index + 1);\n }\n\n public prev(): void {\n this.updateIndex(this.index - 1);\n }\n\n protected get transform(): string {\n const x = this.transitioned ? this.computedTranslate : this.translate;\n\n return `translateX(${100 * x}%)`;\n }\n\n @tuiPure\n protected getStyle(itemsCount: number): Partial<CSSStyleDeclaration> {\n const percent = `${100 / itemsCount}%`;\n\n return {\n flexBasis: percent,\n minWidth: percent,\n maxWidth: percent,\n };\n }\n\n protected onTransitioned(transitioned: boolean): void {\n this.transitioned = transitioned;\n\n if (!transitioned) {\n this.translate = this.computedTranslate;\n }\n }\n\n protected isDisabled(index: number): boolean {\n return index < this.index || index > this.index + this.itemsCount;\n }\n\n protected onIntersection(\n {intersectionRatio}: IntersectionObserverEntry,\n index: number,\n ): void {\n if (intersectionRatio && intersectionRatio >= 0.5 && !this.transitioned) {\n this.updateIndex(this.index < index ? index - this.itemsCount + 1 : index);\n }\n }\n\n protected onScroll(delta: number): void {\n if (!this.isMobile) {\n if (delta > 0) {\n this.next();\n } else {\n this.prev();\n }\n }\n }\n\n protected onPan(x: number): void {\n if (!this.computedDraggable) {\n return;\n }\n\n const min = 1 - this.items.length / this.itemsCount;\n\n this.translate = tuiClamp(x / this.el.clientWidth + this.translate, min, 0);\n }\n\n protected onSwipe(direction: TuiSwipeDirection): void {\n if (direction === 'left') {\n this.next();\n } else if (direction === 'right') {\n this.prev();\n }\n }\n\n protected onAutoscroll(): void {\n this.updateIndex(this.index === this.items.length - 1 ? 0 : this.index + 1);\n }\n\n private get computedTranslate(): number {\n return -this.index / this.itemsCount;\n }\n\n private get computedDraggable(): boolean {\n return this.isMobile || this.draggable;\n }\n\n private updateIndex(index: number): void {\n this.index = tuiClamp(index, 0, this.items.length - 1);\n this.indexChange.emit(this.index);\n this.cdr.markForCheck();\n }\n}\n","<ng-container *ngIf=\"items.changes | async\" />\n<div\n class=\"t-scroller\"\n (tuiCarouselScroll)=\"onScroll($event)\"\n>\n <div\n waIntersectionObserver\n waIntersectionThreshold=\"0.5\"\n class=\"t-wrapper\"\n >\n <div\n class=\"t-items\"\n [style.transform]=\"transform\"\n (tuiCarouselAutoscroll)=\"onAutoscroll()\"\n (tuiPan)=\"onPan($event[0])\"\n (tuiSwipe)=\"onSwipe($event.direction)\"\n >\n <fieldset\n *ngFor=\"let item of items; let i = index\"\n class=\"t-item\"\n [disabled]=\"isDisabled(i)\"\n [ngStyle]=\"getStyle(itemsCount)\"\n (waIntersectionObservee)=\"$event[0] && onIntersection($event[0], i)\"\n >\n <ng-container [ngTemplateOutlet]=\"item\" />\n </fieldset>\n </div>\n </div>\n</div>\n","import {Directive} from '@angular/core';\nimport {tuiButtonOptionsProvider} from '@taiga-ui/core/components/button';\n\n@Directive({\n standalone: true,\n selector: '[tuiCarouselButtons]',\n providers: [\n tuiButtonOptionsProvider({\n appearance: 'secondary',\n size: 'm',\n }),\n ],\n})\nexport class TuiCarouselButtons {}\n","import {TuiItem} from '@taiga-ui/cdk/directives/item';\n\nimport {TuiCarouselComponent} from './carousel.component';\nimport {TuiCarouselDirective} from './carousel.directive';\nimport {TuiCarouselAutoscroll} from './carousel-autoscroll.directive';\nimport {TuiCarouselButtons} from './carousel-buttons.directive';\nimport {TuiCarouselScroll} from './carousel-scroll.directive';\n\nexport const TuiCarousel = [\n TuiItem,\n TuiCarouselComponent,\n TuiCarouselDirective,\n TuiCarouselAutoscroll,\n TuiCarouselButtons,\n TuiCarouselScroll,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ui/kit",
3
- "version": "4.16.0",
3
+ "version": "4.17.0-canary.6b1f985",
4
4
  "description": "Taiga UI Angular main components kit",
5
5
  "keywords": [
6
6
  "angular",
@@ -523,9 +523,9 @@
523
523
  "@ng-web-apis/intersection-observer": "^4.11.1",
524
524
  "@ng-web-apis/mutation-observer": "^4.11.1",
525
525
  "@ng-web-apis/resize-observer": "^4.11.1",
526
- "@taiga-ui/cdk": "^4.16.0",
527
- "@taiga-ui/core": "^4.16.0",
528
- "@taiga-ui/i18n": "^4.16.0",
526
+ "@taiga-ui/cdk": "^4.17.0",
527
+ "@taiga-ui/core": "^4.17.0",
528
+ "@taiga-ui/i18n": "^4.17.0",
529
529
  "@taiga-ui/polymorpheus": "^4.7.4",
530
530
  "rxjs": ">=7.0.0"
531
531
  },