ngx-tethys 19.0.13 → 19.1.0-next.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.
- package/CHANGELOG.md +29 -2
- package/action/action.component.d.ts +12 -20
- package/action/actions.component.d.ts +5 -7
- package/affix/affix.component.d.ts +7 -10
- package/alert/alert.component.d.ts +1 -1
- package/anchor/anchor-link.component.d.ts +8 -8
- package/anchor/anchor.component.d.ts +15 -21
- package/arrow-switcher/arrow-switcher.component.d.ts +15 -22
- package/autocomplete/autocomplete.component.d.ts +10 -17
- package/autocomplete/autocomplete.trigger.directive.d.ts +10 -18
- package/avatar/avatar-list/avatar-list.component.d.ts +8 -14
- package/avatar/avatar.component.d.ts +25 -39
- package/back-top/back-top.component.d.ts +9 -12
- package/badge/badge.component.d.ts +19 -59
- package/breadcrumb/breadcrumb.component.d.ts +15 -20
- package/button/button-icon.component.d.ts +3 -2
- package/button/button.component.d.ts +3 -2
- package/calendar/calendar-header.component.d.ts +9 -8
- package/calendar/calendar.component.d.ts +16 -16
- package/card/card.component.d.ts +5 -11
- package/card/content.component.d.ts +3 -8
- package/card/header.component.d.ts +7 -8
- package/carousel/carousel.component.d.ts +22 -27
- package/cascader/cascader-li.component.d.ts +13 -21
- package/cascader/cascader-search-option.component.d.ts +8 -16
- package/cascader/cascader.component.d.ts +58 -80
- package/checkbox/checkbox.component.d.ts +2 -5
- package/collapse/collapse-item.component.d.ts +12 -19
- package/collapse/collapse.component.d.ts +6 -12
- package/collapse/collapse.token.d.ts +3 -3
- package/color-picker/color-picker-custom-panel.component.d.ts +5 -5
- package/color-picker/color-picker-panel.component.d.ts +7 -11
- package/color-picker/color-picker.component.d.ts +19 -35
- package/color-picker/parts/alpha/alpha.component.d.ts +8 -8
- package/color-picker/parts/hue/hue.component.d.ts +6 -6
- package/color-picker/parts/indicator/indicator.component.d.ts +4 -3
- package/color-picker/parts/inputs/inputs.component.d.ts +9 -9
- package/color-picker/parts/saturation/saturation.component.d.ts +9 -9
- package/comment/comment.component.d.ts +4 -5
- package/copy/copy.directive.d.ts +8 -9
- package/date-picker/abstract-picker.component.d.ts +8 -7
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +2 -1
- package/date-picker/lib/popups/inner-popup.component.d.ts +2 -1
- package/date-picker/picker.component.d.ts +2 -1
- package/date-range/date-range.component.d.ts +2 -2
- package/dialog/body/dialog-body.component.d.ts +2 -6
- package/dialog/confirm/confirm.component.d.ts +2 -2
- package/dialog/footer/dialog-footer.component.d.ts +6 -9
- package/dialog/header/dialog-header.component.d.ts +9 -11
- package/divider/divider.component.d.ts +12 -16
- package/dot/dot.component.d.ts +5 -13
- package/drag-drop/drag-handle.directive.d.ts +2 -1
- package/drag-drop/drag.directive.d.ts +2 -1
- package/drag-drop/drop-container.directive.d.ts +2 -1
- package/dropdown/dropdown-menu-item.directive.d.ts +3 -2
- package/dropdown/dropdown-menu.component.d.ts +2 -1
- package/dropdown/dropdown.directive.d.ts +2 -1
- package/empty/empty.component.d.ts +21 -27
- package/fesm2022/ngx-tethys-action.mjs +54 -91
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +29 -26
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-anchor.mjs +91 -118
- package/fesm2022/ngx-tethys-anchor.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +51 -77
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +69 -103
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-avatar.mjs +117 -162
- package/fesm2022/ngx-tethys-avatar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-back-top.mjs +33 -46
- package/fesm2022/ngx-tethys-back-top.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs +104 -208
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-breadcrumb.mjs +66 -70
- package/fesm2022/ngx-tethys-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngx-tethys-calendar.mjs +85 -87
- package/fesm2022/ngx-tethys-calendar.mjs.map +1 -1
- package/fesm2022/ngx-tethys-card.mjs +72 -77
- package/fesm2022/ngx-tethys-card.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +82 -99
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +313 -468
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +10 -17
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +66 -71
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +187 -246
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-comment.mjs +16 -10
- package/fesm2022/ngx-tethys-comment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +25 -28
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dialog.mjs +81 -82
- package/fesm2022/ngx-tethys-dialog.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +49 -58
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dot.mjs +45 -68
- package/fesm2022/ngx-tethys-dot.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +107 -95
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-form.mjs +161 -200
- package/fesm2022/ngx-tethys-form.mjs.map +1 -1
- package/fesm2022/ngx-tethys-fullscreen.mjs +21 -23
- package/fesm2022/ngx-tethys-fullscreen.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +160 -152
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +25 -25
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs +101 -114
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input.mjs +268 -271
- package/fesm2022/ngx-tethys-input.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +1 -1
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-loading.mjs +17 -35
- package/fesm2022/ngx-tethys-loading.mjs.map +1 -1
- package/fesm2022/ngx-tethys-mention.mjs +52 -74
- package/fesm2022/ngx-tethys-mention.mjs.map +1 -1
- package/fesm2022/ngx-tethys-menu.mjs +106 -179
- package/fesm2022/ngx-tethys-menu.mjs.map +1 -1
- package/fesm2022/ngx-tethys-nav.mjs +169 -201
- package/fesm2022/ngx-tethys-nav.mjs.map +1 -1
- package/fesm2022/ngx-tethys-pagination.mjs +230 -294
- package/fesm2022/ngx-tethys-pagination.mjs.map +1 -1
- package/fesm2022/ngx-tethys-popover.mjs +67 -70
- package/fesm2022/ngx-tethys-popover.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +196 -244
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +102 -105
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +34 -38
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-result.mjs +46 -28
- package/fesm2022/ngx-tethys-result.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +339 -342
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs +75 -108
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +26 -46
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-statistic.mjs +114 -151
- package/fesm2022/ngx-tethys-statistic.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs +74 -107
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-switch.mjs +80 -140
- package/fesm2022/ngx-tethys-switch.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +1 -1
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tabs.mjs +69 -87
- package/fesm2022/ngx-tethys-tabs.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tag.mjs +42 -64
- package/fesm2022/ngx-tethys-tag.mjs.map +1 -1
- package/fesm2022/ngx-tethys-timeline.mjs +104 -129
- package/fesm2022/ngx-tethys-timeline.mjs.map +1 -1
- package/fesm2022/ngx-tethys-typography.mjs +36 -33
- package/fesm2022/ngx-tethys-typography.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +91 -130
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-util.mjs.map +1 -1
- package/fesm2022/ngx-tethys-watermark.mjs +36 -40
- package/fesm2022/ngx-tethys-watermark.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/form/form-group-error/form-group-error.component.d.ts +2 -3
- package/form/form-group-label.directive.d.ts +2 -1
- package/form/form-group.component.d.ts +17 -24
- package/form/form-submit.directive.d.ts +2 -2
- package/form/form.directive.d.ts +6 -8
- package/form/from-group-footer/form-group-footer.component.d.ts +2 -2
- package/form/validator/confirm-validator.directive.d.ts +2 -2
- package/form/validator/unique-validator.directive.d.ts +2 -2
- package/fullscreen/fullscreen.component.d.ts +7 -7
- package/grid/flex.d.ts +14 -19
- package/grid/thy-col.directive.d.ts +6 -9
- package/grid/thy-grid-item.component.d.ts +3 -4
- package/grid/thy-grid.component.d.ts +11 -12
- package/grid/thy-row.directive.d.ts +12 -12
- package/icon/icon.component.d.ts +3 -2
- package/image/image.directive.d.ts +3 -2
- package/input/input-count.component.d.ts +4 -5
- package/input/input-group.component.d.ts +20 -20
- package/input/input-search.component.d.ts +15 -20
- package/input/input.component.d.ts +20 -21
- package/input/input.directive.d.ts +4 -6
- package/input-number/input-number.component.d.ts +21 -29
- package/layout/header.component.d.ts +4 -9
- package/layout/sidebar-header.component.d.ts +2 -1
- package/layout/sidebar.component.d.ts +8 -7
- package/list/list.component.d.ts +2 -1
- package/list/selection/selection-list.d.ts +4 -3
- package/loading/loading.component.d.ts +4 -10
- package/mention/mention.directive.d.ts +6 -7
- package/mention/suggestions/suggestions.component.d.ts +8 -9
- package/menu/group/menu-group.component.d.ts +16 -33
- package/menu/item/action/menu-item-action.component.d.ts +7 -8
- package/menu/item/icon/menu-item-icon.component.d.ts +2 -2
- package/menu/item/menu-item.component.d.ts +4 -4
- package/menu/item/name/menu-item-name.component.d.ts +2 -3
- package/menu/menu.component.d.ts +3 -7
- package/nav/icon-nav/icon-nav-link.directive.d.ts +3 -7
- package/nav/icon-nav/icon-nav.component.d.ts +3 -8
- package/nav/nav-ink-bar.directive.d.ts +4 -6
- package/nav/nav-item.directive.d.ts +7 -10
- package/nav/nav.component.d.ts +20 -48
- package/package.json +1 -1
- package/pagination/pagination.component.d.ts +48 -109
- package/popover/header/popover-header.component.d.ts +7 -6
- package/popover/popover.directive.d.ts +11 -18
- package/progress/progress-circle.component.d.ts +32 -21
- package/progress/progress-strip.component.d.ts +10 -14
- package/progress/progress.component.d.ts +15 -23
- package/property/examples/single/single.component.scss +6 -0
- package/property/properties.component.d.ts +6 -13
- package/property/property-item.component.d.ts +21 -26
- package/property/styles/properties.scss +124 -52
- package/property-operation/property-operation.component.d.ts +6 -5
- package/radio/button/radio-button.component.d.ts +2 -2
- package/radio/group/radio-group.component.d.ts +8 -7
- package/radio/radio.component.d.ts +2 -2
- package/radio/radio.token.d.ts +2 -2
- package/rate/rate-item.component.d.ts +2 -1
- package/rate/rate.component.d.ts +4 -3
- package/resizable/resizable.directive.d.ts +4 -9
- package/resizable/resize-handle.component.d.ts +2 -1
- package/resizable/resize-handles.component.d.ts +2 -1
- package/result/result.component.d.ts +9 -10
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +2 -1
- package/segment/segment.component.d.ts +2 -1
- package/select/custom-select/custom-select.component.d.ts +11 -10
- package/select/native-select/native-select.component.d.ts +2 -1
- package/shared/base-form-check.component.d.ts +3 -2
- package/shared/directives/thy-autofocus.directive.d.ts +3 -2
- package/shared/directives/thy-scroll.directive.d.ts +2 -1
- package/shared/directives/thy-show.d.ts +2 -1
- package/shared/option/group/option-group.component.d.ts +2 -1
- package/shared/option/list-option/list-option.component.d.ts +2 -7
- package/shared/option/option.component.d.ts +2 -1
- package/shared/select/select-control/select-control.component.d.ts +7 -6
- package/skeleton/skeleton-circle.component.d.ts +16 -19
- package/skeleton/skeleton-rectangle.component.d.ts +20 -23
- package/skeleton/skeleton.component.d.ts +5 -6
- package/skeleton/stylized/bullet-list.component.d.ts +11 -13
- package/skeleton/stylized/list.component.d.ts +10 -12
- package/skeleton/stylized/paragraph.component.d.ts +12 -14
- package/slide/slide-body/slide-body-section.component.d.ts +2 -1
- package/slider/slider.component.d.ts +17 -24
- package/space/space.component.d.ts +8 -8
- package/statistic/statistic.component.d.ts +35 -40
- package/stepper/step-header.component.d.ts +6 -10
- package/stepper/step.component.d.ts +6 -6
- package/stepper/stepper.component.d.ts +15 -20
- package/switch/switch.component.d.ts +24 -35
- package/table/table-column.component.d.ts +6 -5
- package/table/table-skeleton.component.d.ts +3 -10
- package/table/table.component.d.ts +11 -10
- package/tabs/tab-content.component.d.ts +4 -4
- package/tabs/tab.component.d.ts +4 -5
- package/tabs/tabs.component.d.ts +13 -15
- package/tag/tag.component.d.ts +10 -16
- package/time-picker/time-picker-panel.component.d.ts +3 -2
- package/time-picker/time-picker.component.d.ts +6 -5
- package/timeline/timeline-item.component.d.ts +9 -13
- package/timeline/timeline.component.d.ts +13 -17
- package/tooltip/tooltip.directive.d.ts +3 -2
- package/tree/tree-node.component.d.ts +6 -15
- package/tree/tree.component.d.ts +8 -7
- package/tree-select/tree-select.component.d.ts +8 -7
- package/typography/bg-color.directive.d.ts +3 -3
- package/typography/text/text.component.d.ts +2 -2
- package/typography/text-color.directive.d.ts +3 -3
- package/upload/file-drop.directive.d.ts +9 -11
- package/upload/file-select-base.d.ts +6 -10
- package/upload/file-select.component.d.ts +10 -20
- package/util/helpers/helpers.d.ts +2 -1
- package/vote/vote.component.d.ts +4 -3
- package/watermark/watermark.directive.d.ts +7 -9
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Renderer2, ElementRef, Directive, NgZone, Injectable, InjectionToken, ChangeDetectorRef,
|
|
2
|
+
import { inject, Renderer2, ElementRef, Directive, NgZone, Injectable, InjectionToken, ChangeDetectorRef, viewChild, input, numberAttribute, output, computed, effect, ContentChildren, ViewEncapsulation, ChangeDetectionStrategy, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { DOCUMENT, NgTemplateOutlet, CommonModule } from '@angular/common';
|
|
4
4
|
import { Platform } from '@angular/cdk/platform';
|
|
5
5
|
import { ThyDot, ThyDotModule } from 'ngx-tethys/dot';
|
|
6
6
|
import { ThyIcon, ThyIconModule } from 'ngx-tethys/icon';
|
|
7
|
-
import { TinyDate, isNumber
|
|
7
|
+
import { coerceBooleanProperty, TinyDate, isNumber } from 'ngx-tethys/util';
|
|
8
8
|
import { Subject, fromEvent } from 'rxjs';
|
|
9
9
|
import { map, takeUntil, debounceTime } from 'rxjs/operators';
|
|
10
10
|
|
|
@@ -298,67 +298,115 @@ class ThyCarousel {
|
|
|
298
298
|
this.carouselService = inject(ThyCarouselService);
|
|
299
299
|
this.platform = inject(Platform);
|
|
300
300
|
/**
|
|
301
|
-
*
|
|
301
|
+
* @private
|
|
302
302
|
*/
|
|
303
|
-
this.
|
|
303
|
+
this.carouselWrapper = viewChild('carouselWrapper');
|
|
304
|
+
/**
|
|
305
|
+
* 是否自动切换
|
|
306
|
+
*/
|
|
307
|
+
this.thyAutoPlay = input(false, { transform: coerceBooleanProperty });
|
|
304
308
|
/**
|
|
305
309
|
* 自动切换时间间隔(毫秒)
|
|
306
310
|
*/
|
|
307
|
-
this.thyAutoPlayInterval = 3000;
|
|
311
|
+
this.thyAutoPlayInterval = input(3000, { transform: numberAttribute });
|
|
308
312
|
/**
|
|
309
313
|
* 切换动画样式
|
|
310
314
|
* @type slide | fade | noop
|
|
311
315
|
*/
|
|
312
|
-
this.thyEffect = 'slide';
|
|
316
|
+
this.thyEffect = input('slide');
|
|
313
317
|
/**
|
|
314
318
|
* 是否显示切换指示器
|
|
315
319
|
*/
|
|
316
|
-
this.thyIndicators = true;
|
|
320
|
+
this.thyIndicators = input(true, { transform: coerceBooleanProperty });
|
|
321
|
+
/**
|
|
322
|
+
* 指示器 Item 的渲染模板
|
|
323
|
+
*/
|
|
324
|
+
this.thyIndicatorRender = input();
|
|
317
325
|
/**
|
|
318
326
|
* 是否显示左右切换
|
|
319
327
|
*/
|
|
320
|
-
this.thyControls = true;
|
|
328
|
+
this.thyControls = input(true, { transform: coerceBooleanProperty });
|
|
329
|
+
/**
|
|
330
|
+
* 上一个控制器渲染模板
|
|
331
|
+
*/
|
|
332
|
+
this.thyControlPrev = input();
|
|
333
|
+
/**
|
|
334
|
+
* 下一个控制器渲染模板
|
|
335
|
+
*/
|
|
336
|
+
this.thyControlNext = input();
|
|
321
337
|
/**
|
|
322
338
|
* 是否支持手势滑动
|
|
323
339
|
*/
|
|
324
|
-
this.thyTouchable = true;
|
|
340
|
+
this.thyTouchable = input(true, { transform: coerceBooleanProperty });
|
|
325
341
|
/**
|
|
326
342
|
* 指示点切换的触发条件
|
|
327
343
|
* @type click | hover
|
|
328
344
|
*/
|
|
329
|
-
this.thyTrigger = 'click';
|
|
345
|
+
this.thyTrigger = input('click');
|
|
330
346
|
/**
|
|
331
347
|
* 鼠标移动到指示器时是否暂停播放
|
|
332
348
|
* @type false | hover
|
|
333
349
|
*/
|
|
334
|
-
this.thyPause = 'hover';
|
|
350
|
+
this.thyPause = input('hover');
|
|
335
351
|
/**
|
|
336
352
|
* 触发切换帧之前,返回 `{from: number, to: number}`
|
|
337
353
|
*/
|
|
338
|
-
this.thyBeforeChange =
|
|
354
|
+
this.thyBeforeChange = output();
|
|
339
355
|
/**
|
|
340
356
|
* 切换帧之后的回调,返回当前帧索引
|
|
341
357
|
*/
|
|
342
|
-
this.thyAfterChange =
|
|
358
|
+
this.thyAfterChange = output();
|
|
343
359
|
this.isDragging = false;
|
|
344
360
|
this.isTransitioning = false;
|
|
345
361
|
this.pointerVector = { x: 0, y: 0 };
|
|
362
|
+
this.engine = computed(() => {
|
|
363
|
+
switch (this.thyEffect()) {
|
|
364
|
+
case 'slide':
|
|
365
|
+
return new ThyCarouselSlideEngine(this, this.cdr, this.renderer, this.platform);
|
|
366
|
+
case 'fade':
|
|
367
|
+
return new ThyCarouselFadeEngine(this, this.cdr, this.renderer, this.platform);
|
|
368
|
+
default:
|
|
369
|
+
return new ThyCarouselNoopEngine(this, this.cdr, this.renderer, this.platform);
|
|
370
|
+
}
|
|
371
|
+
});
|
|
346
372
|
this._trigger$ = new Subject();
|
|
347
373
|
this._destroy$ = new Subject();
|
|
348
374
|
this.activeIndex = 0;
|
|
349
375
|
this.transitionTimer = null;
|
|
350
376
|
this.playTime = 400;
|
|
351
377
|
this.isPause = false;
|
|
378
|
+
effect(() => {
|
|
379
|
+
if (this.thyEffect()) {
|
|
380
|
+
this.markContentActive(0);
|
|
381
|
+
this.setInitialValue();
|
|
382
|
+
}
|
|
383
|
+
});
|
|
384
|
+
effect(() => {
|
|
385
|
+
if (this.thyTouchable()) {
|
|
386
|
+
this.renderer.setStyle(this.wrapperEl, 'cursor', this.thyTouchable() ? 'grab' : 'default');
|
|
387
|
+
}
|
|
388
|
+
});
|
|
389
|
+
effect(() => {
|
|
390
|
+
if (!this.thyAutoPlay() || !this.thyAutoPlayInterval()) {
|
|
391
|
+
this.clearScheduledTransition();
|
|
392
|
+
}
|
|
393
|
+
else {
|
|
394
|
+
this.scheduleNextTransition();
|
|
395
|
+
}
|
|
396
|
+
});
|
|
352
397
|
}
|
|
353
398
|
moveTo(index) {
|
|
354
|
-
|
|
399
|
+
const carouselItems = this.carouselItems;
|
|
400
|
+
if (carouselItems && carouselItems.length && !this.isTransitioning) {
|
|
355
401
|
this.setInitialValue();
|
|
356
|
-
const len =
|
|
402
|
+
const len = carouselItems.length;
|
|
357
403
|
const from = this.activeIndex;
|
|
358
404
|
const to = (index + len) % len;
|
|
359
405
|
this.thyBeforeChange.emit({ from, to });
|
|
360
406
|
this.isTransitioning = true;
|
|
361
|
-
this.engine
|
|
407
|
+
this.engine()
|
|
408
|
+
?.switch(index, this.activeIndex)
|
|
409
|
+
.subscribe(() => {
|
|
362
410
|
this.activeIndex = to;
|
|
363
411
|
this.markContentActive(this.activeIndex);
|
|
364
412
|
this.scheduleNextTransition();
|
|
@@ -369,36 +417,23 @@ class ThyCarousel {
|
|
|
369
417
|
this.cdr.markForCheck();
|
|
370
418
|
}
|
|
371
419
|
}
|
|
372
|
-
switchEngine() {
|
|
373
|
-
switch (this.thyEffect) {
|
|
374
|
-
case 'slide':
|
|
375
|
-
this.engine = new ThyCarouselSlideEngine(this, this.cdr, this.renderer, this.platform);
|
|
376
|
-
break;
|
|
377
|
-
case 'fade':
|
|
378
|
-
this.engine = new ThyCarouselFadeEngine(this, this.cdr, this.renderer, this.platform);
|
|
379
|
-
break;
|
|
380
|
-
default:
|
|
381
|
-
this.engine = new ThyCarouselNoopEngine(this, this.cdr, this.renderer, this.platform);
|
|
382
|
-
}
|
|
383
|
-
}
|
|
384
420
|
markContentActive(index) {
|
|
385
421
|
this.activeIndex = index;
|
|
386
|
-
this.carouselItems
|
|
422
|
+
this.carouselItems?.forEach((carouselContent, i) => {
|
|
387
423
|
carouselContent.isActive = index === i;
|
|
388
424
|
});
|
|
389
|
-
this.cdr.detectChanges();
|
|
390
425
|
}
|
|
391
426
|
setInitialValue() {
|
|
392
|
-
if (this.engine) {
|
|
393
|
-
this.engine
|
|
427
|
+
if (this.engine() && this.carouselItems) {
|
|
428
|
+
this.engine()?.initializeCarouselContents(this.carouselItems);
|
|
394
429
|
}
|
|
395
430
|
}
|
|
396
431
|
scheduleNextTransition() {
|
|
397
432
|
this.clearScheduledTransition();
|
|
398
|
-
if (this.thyAutoPlay && !this.isPause) {
|
|
433
|
+
if (this.thyAutoPlay() && !this.isPause) {
|
|
399
434
|
this.transitionTimer = setTimeout(() => {
|
|
400
435
|
this.moveTo(this.activeIndex + 1);
|
|
401
|
-
}, this.thyAutoPlayInterval);
|
|
436
|
+
}, this.thyAutoPlayInterval());
|
|
402
437
|
}
|
|
403
438
|
}
|
|
404
439
|
clearScheduledTransition() {
|
|
@@ -408,7 +443,7 @@ class ThyCarousel {
|
|
|
408
443
|
}
|
|
409
444
|
}
|
|
410
445
|
onDrag(event) {
|
|
411
|
-
if (!this.isDragging && !this.isTransitioning && this.thyTouchable) {
|
|
446
|
+
if (!this.isDragging && !this.isTransitioning && this.thyTouchable()) {
|
|
412
447
|
const mouseDownTime = new TinyDate().getTime();
|
|
413
448
|
let mouseUpTime;
|
|
414
449
|
this.clearScheduledTransition();
|
|
@@ -417,7 +452,7 @@ class ThyCarousel {
|
|
|
417
452
|
this.renderer.setStyle(this.wrapperEl, 'cursor', 'grabbing');
|
|
418
453
|
this.pointerVector = pointerVector;
|
|
419
454
|
this.isDragging = true;
|
|
420
|
-
this.engine?.dragging(this.pointerVector, this.wrapperDomRect);
|
|
455
|
+
this.engine()?.dragging(this.pointerVector, this.wrapperDomRect);
|
|
421
456
|
}, () => { }, () => {
|
|
422
457
|
if (this.isDragging) {
|
|
423
458
|
mouseUpTime = new TinyDate().getTime();
|
|
@@ -439,21 +474,21 @@ class ThyCarousel {
|
|
|
439
474
|
}
|
|
440
475
|
}
|
|
441
476
|
indicatorHandleClick(index) {
|
|
442
|
-
if (this.thyTrigger === 'click') {
|
|
477
|
+
if (this.thyTrigger() === 'click') {
|
|
443
478
|
this.moveTo(index);
|
|
444
479
|
}
|
|
445
480
|
}
|
|
446
481
|
indicatorHandleTrigger(index) {
|
|
447
|
-
if (this.thyPause === 'hover') {
|
|
482
|
+
if (this.thyPause() === 'hover') {
|
|
448
483
|
this.isPause = true;
|
|
449
484
|
this.clearScheduledTransition();
|
|
450
485
|
}
|
|
451
|
-
if (this.thyTrigger === 'hover') {
|
|
486
|
+
if (this.thyTrigger() === 'hover') {
|
|
452
487
|
this._trigger$.next(index);
|
|
453
488
|
}
|
|
454
489
|
}
|
|
455
490
|
indicatorHandleLeave() {
|
|
456
|
-
if (this.thyPause === 'hover') {
|
|
491
|
+
if (this.thyPause() === 'hover') {
|
|
457
492
|
this.isPause = false;
|
|
458
493
|
this.scheduleNextTransition();
|
|
459
494
|
}
|
|
@@ -465,41 +500,23 @@ class ThyCarousel {
|
|
|
465
500
|
this.moveTo(this.activeIndex - 1);
|
|
466
501
|
}
|
|
467
502
|
ngOnInit() {
|
|
468
|
-
this.wrapperEl = this.carouselWrapper.nativeElement;
|
|
503
|
+
this.wrapperEl = this.carouselWrapper().nativeElement;
|
|
469
504
|
this.ngZone.runOutsideAngular(() => {
|
|
470
505
|
fromEvent(window, 'resize')
|
|
471
506
|
.pipe(takeUntil(this._destroy$), debounceTime(100))
|
|
472
507
|
.subscribe(() => {
|
|
473
|
-
this.engine?.correctionOffset();
|
|
508
|
+
this.engine()?.correctionOffset();
|
|
474
509
|
});
|
|
475
510
|
});
|
|
476
511
|
}
|
|
477
|
-
ngOnChanges(changes) {
|
|
478
|
-
const { thyEffect, thyTouchable } = changes;
|
|
479
|
-
if (thyEffect && !thyEffect.isFirstChange()) {
|
|
480
|
-
this.switchEngine();
|
|
481
|
-
this.markContentActive(0);
|
|
482
|
-
this.setInitialValue();
|
|
483
|
-
}
|
|
484
|
-
if (thyTouchable && !thyTouchable.isFirstChange()) {
|
|
485
|
-
this.renderer.setStyle(this.wrapperEl, 'cursor', thyTouchable.currentValue ? 'grab' : 'default');
|
|
486
|
-
}
|
|
487
|
-
if (!this.thyAutoPlay || !this.thyAutoPlayInterval) {
|
|
488
|
-
this.clearScheduledTransition();
|
|
489
|
-
}
|
|
490
|
-
else {
|
|
491
|
-
this.scheduleNextTransition();
|
|
492
|
-
}
|
|
493
|
-
}
|
|
494
512
|
ngAfterViewInit() {
|
|
495
513
|
this.carouselItems.changes.subscribe(() => {
|
|
496
514
|
this.markContentActive(0);
|
|
497
515
|
this.setInitialValue();
|
|
498
516
|
});
|
|
499
|
-
this.switchEngine();
|
|
500
517
|
this.markContentActive(0);
|
|
501
518
|
this.setInitialValue();
|
|
502
|
-
if (!this.thyTouchable) {
|
|
519
|
+
if (!this.thyTouchable()) {
|
|
503
520
|
this.renderer.setStyle(this.wrapperEl, 'cursor', 'default');
|
|
504
521
|
}
|
|
505
522
|
}
|
|
@@ -518,12 +535,12 @@ class ThyCarousel {
|
|
|
518
535
|
this._destroy$.complete();
|
|
519
536
|
}
|
|
520
537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCarousel, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
521
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCarousel, isStandalone: true, selector: "thy-carousel", inputs: { thyAutoPlay:
|
|
538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.8", type: ThyCarousel, isStandalone: true, selector: "thy-carousel", inputs: { thyAutoPlay: { classPropertyName: "thyAutoPlay", publicName: "thyAutoPlay", isSignal: true, isRequired: false, transformFunction: null }, thyAutoPlayInterval: { classPropertyName: "thyAutoPlayInterval", publicName: "thyAutoPlayInterval", isSignal: true, isRequired: false, transformFunction: null }, thyEffect: { classPropertyName: "thyEffect", publicName: "thyEffect", isSignal: true, isRequired: false, transformFunction: null }, thyIndicators: { classPropertyName: "thyIndicators", publicName: "thyIndicators", isSignal: true, isRequired: false, transformFunction: null }, thyIndicatorRender: { classPropertyName: "thyIndicatorRender", publicName: "thyIndicatorRender", isSignal: true, isRequired: false, transformFunction: null }, thyControls: { classPropertyName: "thyControls", publicName: "thyControls", isSignal: true, isRequired: false, transformFunction: null }, thyControlPrev: { classPropertyName: "thyControlPrev", publicName: "thyControlPrev", isSignal: true, isRequired: false, transformFunction: null }, thyControlNext: { classPropertyName: "thyControlNext", publicName: "thyControlNext", isSignal: true, isRequired: false, transformFunction: null }, thyTouchable: { classPropertyName: "thyTouchable", publicName: "thyTouchable", isSignal: true, isRequired: false, transformFunction: null }, thyTrigger: { classPropertyName: "thyTrigger", publicName: "thyTrigger", isSignal: true, isRequired: false, transformFunction: null }, thyPause: { classPropertyName: "thyPause", publicName: "thyPause", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { thyBeforeChange: "thyBeforeChange", thyAfterChange: "thyAfterChange" }, host: { classAttribute: "thy-carousel" }, providers: [
|
|
522
539
|
{
|
|
523
540
|
provide: THY_CAROUSEL_COMPONENT,
|
|
524
541
|
useExisting: ThyCarousel
|
|
525
542
|
}
|
|
526
|
-
], queries: [{ propertyName: "carouselItems", predicate: ThyCarouselItemDirective }], viewQueries: [{ propertyName: "carouselWrapper", first: true, predicate: ["carouselWrapper"], descendants: true,
|
|
543
|
+
], queries: [{ propertyName: "carouselItems", predicate: ThyCarouselItemDirective }], viewQueries: [{ propertyName: "carouselWrapper", first: true, predicate: ["carouselWrapper"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n @if (thyControls() && carouselItems?.length > 1) {\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev() || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext() || defaultControlNext\"></ng-container>\n </div>\n }\n @if (thyIndicators()) {\n <div class=\"thy-carousel-indicators\">\n @for (content of carouselItems; track $index; let i = $index) {\n <span\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\">\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender() || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"></ng-template>\n </span>\n }\n </div>\n }\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ThyDot, selector: "thy-dot,[thy-dot],[thyDot]", inputs: ["thyColor", "thySize", "thyTheme", "thyShape"] }, { kind: "component", type: ThyIcon, selector: "thy-icon, [thy-icon]", inputs: ["thyIconType", "thyTwotoneColor", "thyIconName", "thyIconRotate", "thyIconSet", "thyIconLegging", "thyIconLinearGradient"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
527
544
|
}
|
|
528
545
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyCarousel, decorators: [{
|
|
529
546
|
type: Component,
|
|
@@ -534,44 +551,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImpor
|
|
|
534
551
|
provide: THY_CAROUSEL_COMPONENT,
|
|
535
552
|
useExisting: ThyCarousel
|
|
536
553
|
}
|
|
537
|
-
], template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n @if (thyControls && carouselItems
|
|
538
|
-
}], propDecorators: { carouselItems: [{
|
|
554
|
+
], template: "<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n @if (thyControls() && carouselItems?.length > 1) {\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev() || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext() || defaultControlNext\"></ng-container>\n </div>\n }\n @if (thyIndicators()) {\n <div class=\"thy-carousel-indicators\">\n @for (content of carouselItems; track $index; let i = $index) {\n <span\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\">\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender() || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"></ng-template>\n </span>\n }\n </div>\n }\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n" }]
|
|
555
|
+
}], ctorParameters: () => [], propDecorators: { carouselItems: [{
|
|
539
556
|
type: ContentChildren,
|
|
540
557
|
args: [ThyCarouselItemDirective]
|
|
541
|
-
}], carouselWrapper: [{
|
|
542
|
-
type: ViewChild,
|
|
543
|
-
args: ['carouselWrapper', { static: true }]
|
|
544
|
-
}], thyAutoPlay: [{
|
|
545
|
-
type: Input,
|
|
546
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
547
|
-
}], thyAutoPlayInterval: [{
|
|
548
|
-
type: Input,
|
|
549
|
-
args: [{ transform: numberAttribute }]
|
|
550
|
-
}], thyEffect: [{
|
|
551
|
-
type: Input
|
|
552
|
-
}], thyIndicators: [{
|
|
553
|
-
type: Input,
|
|
554
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
555
|
-
}], thyIndicatorRender: [{
|
|
556
|
-
type: Input
|
|
557
|
-
}], thyControls: [{
|
|
558
|
-
type: Input,
|
|
559
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
560
|
-
}], thyControlPrev: [{
|
|
561
|
-
type: Input
|
|
562
|
-
}], thyControlNext: [{
|
|
563
|
-
type: Input
|
|
564
|
-
}], thyTouchable: [{
|
|
565
|
-
type: Input,
|
|
566
|
-
args: [{ transform: coerceBooleanProperty }]
|
|
567
|
-
}], thyTrigger: [{
|
|
568
|
-
type: Input
|
|
569
|
-
}], thyPause: [{
|
|
570
|
-
type: Input
|
|
571
|
-
}], thyBeforeChange: [{
|
|
572
|
-
type: Output
|
|
573
|
-
}], thyAfterChange: [{
|
|
574
|
-
type: Output
|
|
575
558
|
}] } });
|
|
576
559
|
|
|
577
560
|
const COMPONENTS = [ThyCarousel, ThyCarouselItemDirective];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-carousel.mjs","sources":["../../../src/carousel/carousel-item.directive.ts","../../../src/carousel/carousel.service.ts","../../../src/carousel/engine/carousel-base.ts","../../../src/carousel/engine/carousel-noop.ts","../../../src/carousel/engine/carousel-slide.ts","../../../src/carousel/engine/carousel-fade.ts","../../../src/carousel/carousel.token.ts","../../../src/carousel/carousel.component.ts","../../../src/carousel/carousel.component.html","../../../src/carousel/module.ts","../../../src/carousel/ngx-tethys-carousel.ts"],"sourcesContent":["import { Directive, ElementRef, Renderer2, inject } from '@angular/core';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyCarouselItem],[thy-carousel-item]',\n exportAs: 'thyCarouseItem'\n})\nexport class ThyCarouselItemDirective {\n private renderer = inject(Renderer2);\n\n private _active = false;\n\n readonly el: HTMLElement;\n\n set isActive(value: boolean) {\n this._active = value;\n if (this.isActive) {\n this.renderer.addClass(this.el, 'thy-carousel-item-active');\n } else {\n this.renderer.removeClass(this.el, 'thy-carousel-item-active');\n }\n }\n\n get isActive(): boolean {\n return this._active;\n }\n\n constructor() {\n const elementRef = inject(ElementRef);\n\n this.el = elementRef.nativeElement;\n this.renderer.addClass(elementRef.nativeElement, 'thy-carousel-item');\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ThyDistanceVector } from './typings';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyCarouselService {\n private ngZone = inject(NgZone);\n\n private listeners = new Map<string, (event: MouseEvent | TouchEvent) => void>();\n private document: Document;\n\n documentDraggingOutside$ = new Subject<MouseEvent | Touch>();\n\n constructor() {\n const document = inject(DOCUMENT);\n\n this.document = document;\n }\n\n private clearListeners(): void {\n this.listeners.forEach((handler, name) => {\n this.document.removeEventListener(name, handler as EventListener);\n });\n this.listeners.clear();\n }\n\n private getEventPotions(event: MouseEvent | TouchEvent): MouseEvent | Touch {\n if (event instanceof MouseEvent) {\n return event;\n } else {\n return event.touches[0] || event.changedTouches[0];\n }\n }\n\n registerDrag(event: MouseEvent | TouchEvent): Observable<ThyDistanceVector> {\n if (this.documentDraggingOutside$) {\n this.documentDraggingOutside$.complete();\n }\n\n const startPoint = this.getEventPotions(event);\n\n this.documentDraggingOutside$ = new Subject<MouseEvent | Touch>();\n\n this.registerHandler(event);\n\n return this.documentDraggingOutside$.pipe(\n map(e => {\n return {\n x: e.pageX - startPoint!.pageX,\n y: e.pageY - startPoint!.pageY\n };\n })\n );\n }\n\n registerHandler(event: MouseEvent | TouchEvent) {\n this.clearListeners();\n const _isTouchEvent = event instanceof MouseEvent;\n const moveEvent = _isTouchEvent ? 'mousemove' : 'touchmove';\n const upEvent = _isTouchEvent ? 'mouseup' : 'touchend';\n const moveEventHandler = (e: MouseEvent | TouchEvent) => {\n this.documentDraggingOutside$.next(e instanceof MouseEvent ? e : e.touches[0] || e.changedTouches[0]);\n };\n const upEventHandler = () => {\n this.documentDraggingOutside$.complete();\n this.clearListeners();\n };\n this.listeners.set(moveEvent, moveEventHandler);\n this.listeners.set(upEvent, upEventHandler);\n this.ngZone.runOutsideAngular(() => {\n this.listeners.forEach((handler, name) => {\n this.document.addEventListener(name, handler as EventListener);\n });\n });\n }\n}\n","import { ChangeDetectorRef, Renderer2, QueryList } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable } from 'rxjs';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector, ThyCarouselEngine } from '../typings';\n\nexport abstract class ThyCarouselBaseEngine implements ThyCarouselEngine {\n protected contentWidth: number;\n protected contentHeight: number;\n protected readonly carouselComponent: IThyCarouselComponent;\n protected wrapperEl: HTMLElement;\n protected playTime: number;\n protected length: number;\n protected contents: ThyCarouselItemDirective[];\n\n protected get maxIndex(): number {\n return this.length - 1;\n }\n\n protected get firstEl(): HTMLElement {\n return this.contents[0].el;\n }\n\n protected get lastEl(): HTMLElement {\n return this.contents[this.maxIndex].el;\n }\n\n protected constructor(\n thyCarouselComponent: IThyCarouselComponent,\n protected cdr: ChangeDetectorRef,\n protected renderer: Renderer2,\n protected platform: Platform\n ) {\n this.carouselComponent = thyCarouselComponent;\n }\n\n initializeContents(contents: QueryList<ThyCarouselItemDirective> | null) {\n const carousel = this.carouselComponent!;\n const { wrapperEl, playTime } = carousel;\n this.wrapperEl = wrapperEl;\n this.playTime = playTime;\n const { width, height } = wrapperEl.getBoundingClientRect();\n this.contentHeight = height;\n this.contentWidth = width;\n\n this.contents = contents?.toArray();\n this.length = this.contents.length;\n if (this.platform.isBrowser && this.contents.length) {\n this.renderer.setStyle(this.wrapperEl, 'transform', 'translate3d(0, 0, 0)');\n this.renderer.setStyle(this.wrapperEl, `height`, `${this.contentHeight}px`);\n }\n this.contents.forEach(content => {\n content.el.removeAttribute('style');\n });\n }\n\n abstract dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void;\n\n abstract initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void;\n\n abstract switch(to: number, from: number): Observable<void>;\n\n correctionOffset(): void {\n const carousel = this.carouselComponent!;\n const { wrapperEl } = carousel;\n const { width, height } = wrapperEl.getBoundingClientRect();\n this.contentWidth = width;\n this.contentHeight = height;\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselNoopEngine extends ThyCarouselBaseEngine {\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {}\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n this.renderer.setStyle(\n this.wrapperEl,\n `transform`,\n `translate3d(${(-(to + this.length) % this.length) * this.contentWidth}px,0 , 0)`\n );\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n switch$.complete();\n }, 0);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {\n super.correctionOffset();\n const { activeIndex } = this.carouselComponent!;\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-activeIndex * this.contentWidth}px,0 , 0)`);\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselSlideEngine extends ThyCarouselBaseEngine {\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n private prepareHorizontalContext(activeIndex: number): void {\n if (activeIndex >= this.maxIndex) {\n this.renderer.setStyle(this.firstEl, 'left', `${this.length * this.contentWidth}px`);\n this.renderer.setStyle(this.lastEl, 'left', null);\n } else if (activeIndex <= 0) {\n this.renderer.setStyle(this.firstEl, 'left', null);\n this.renderer.setStyle(this.lastEl, 'left', `${-this.length * this.contentWidth}px`);\n } else {\n this.resetContext();\n }\n }\n\n private resetContext() {\n this.renderer.setStyle(this.lastEl, 'left', null);\n this.renderer.setStyle(this.firstEl, 'left', null);\n }\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {\n const { x } = pointerVector;\n const { width, height } = rect;\n this.contentWidth = width;\n this.contentHeight = height;\n const activeIndex = this.carouselComponent!.activeIndex;\n if (this.length > 1) {\n this.prepareHorizontalContext(activeIndex);\n }\n this.renderer.setStyle(this.wrapperEl, 'transform', `translate3d(${-activeIndex * this.contentWidth + x}px,0 , 0)`);\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n if (Math.abs(from - to) === 1 || from === to) {\n this.prepareHorizontalContext(to);\n }\n this.renderer.setStyle(this.wrapperEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-to * this.contentWidth}px,0 , 0)`);\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n this.resetContext();\n this.renderer.setStyle(this.wrapperEl, `transition-duration`, `0s`);\n this.renderer.setStyle(\n this.wrapperEl,\n `transform`,\n `translate3d(${-((to + this.length) % this.length) * this.contentWidth}px,0 , 0)`\n );\n switch$.complete();\n }, this.playTime);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {\n super.correctionOffset();\n const { activeIndex } = this.carouselComponent!;\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-activeIndex * this.contentWidth}px,0 , 0)`);\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselFadeEngine extends ThyCarouselBaseEngine {\n contentsEl: HTMLElement[];\n\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {\n const { x } = pointerVector;\n const { width } = rect;\n const activeIndex = this.carouselComponent!.activeIndex;\n const currentContent = this.contentsEl[activeIndex];\n this.renderer.setStyle(currentContent, 'opacity', `${1 - Math.abs(x) / width}`);\n }\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n this.contentsEl = [];\n contents.forEach((content, index) => {\n this.contentsEl.push(content.el);\n this.renderer.setStyle(content.el, 'opacity', this.carouselComponent!.activeIndex === index ? '1' : '0');\n this.renderer.setStyle(content.el, 'position', 'absolute');\n this.renderer.setStyle(content.el, 'left', '0');\n this.renderer.setStyle(content.el, `transition-property`, 'opacity');\n this.renderer.setStyle(content.el, `transition-timing-function`, 'ease');\n });\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n const currentEl = this.contentsEl[from];\n const nextEl = this.contentsEl[(to + this.length) % this.length];\n this.renderer.setStyle(currentEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(nextEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(currentEl, 'opacity', '0');\n this.renderer.setStyle(nextEl, 'opacity', '1');\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n this.renderer.setStyle(currentEl, `transition-duration`, `0s`);\n this.renderer.setStyle(nextEl, `transition-duration`, `0s`);\n switch$.complete();\n }, this.playTime);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface IThyCarouselComponent {\n wrapperEl: HTMLElement;\n playTime: number;\n activeIndex: number;\n}\n\nexport const THY_CAROUSEL_COMPONENT = new InjectionToken<IThyCarouselComponent>('THY_CAROUSEL_COMPONENT');\n","import { Platform } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n inject,\n Input,\n NgZone,\n numberAttribute,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n Renderer2,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty, isNumber, TinyDate } from 'ngx-tethys/util';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ThyCarouselItemDirective } from './carousel-item.directive';\nimport { ThyCarouselService } from './carousel.service';\nimport { ThyCarouselFadeEngine, ThyCarouselNoopEngine, ThyCarouselSlideEngine } from './engine';\nimport {\n ThyCarouselEffect,\n ThyCarouselEngine,\n ThyCarouselPause,\n ThyCarouselSwitchData,\n ThyCarouselTrigger,\n ThyDistanceVector\n} from './typings';\nimport { IThyCarouselComponent, THY_CAROUSEL_COMPONENT } from './carousel.token';\n\n/**\n * 走马灯组件\n * @name thy-carousel\n */\n@Component({\n selector: 'thy-carousel',\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n class: 'thy-carousel'\n },\n imports: [NgTemplateOutlet, ThyDot, ThyIcon],\n providers: [\n {\n provide: THY_CAROUSEL_COMPONENT,\n useExisting: ThyCarousel\n }\n ]\n})\nexport class ThyCarousel implements IThyCarouselComponent, OnInit, AfterViewInit, AfterContentInit, OnChanges, OnDestroy {\n protected renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private readonly carouselService = inject(ThyCarouselService);\n private readonly platform = inject(Platform);\n\n /**\n * @private\n */\n @ContentChildren(ThyCarouselItemDirective) carouselItems!: QueryList<ThyCarouselItemDirective>;\n\n /**\n * @private\n */\n @ViewChild('carouselWrapper', { static: true }) carouselWrapper: ElementRef<HTMLElement>;\n\n /**\n * 是否自动切换,默认 false\n */\n @Input({ transform: coerceBooleanProperty }) thyAutoPlay: boolean = false;\n\n /**\n * 自动切换时间间隔(毫秒)\n */\n @Input({ transform: numberAttribute }) thyAutoPlayInterval: number = 3000;\n\n /**\n * 切换动画样式\n * @type slide | fade | noop\n */\n @Input() thyEffect: ThyCarouselEffect = 'slide';\n\n /**\n * 是否显示切换指示器\n */\n @Input({ transform: coerceBooleanProperty }) thyIndicators = true;\n\n /**\n * 指示器 Item 的渲染模板\n */\n @Input() thyIndicatorRender?: TemplateRef<{ $implicit: boolean }>;\n\n /**\n * 是否显示左右切换\n */\n @Input({ transform: coerceBooleanProperty }) thyControls = true;\n\n /**\n * 上一个控制器渲染模板\n */\n @Input() thyControlPrev?: TemplateRef<any>;\n\n /**\n * 下一个控制器渲染模板\n */\n @Input() thyControlNext?: TemplateRef<any>;\n\n /**\n * 是否支持手势滑动\n */\n @Input({ transform: coerceBooleanProperty }) thyTouchable = true;\n\n /**\n * 指示点切换的触发条件\n * @type click | hover\n */\n @Input() thyTrigger: ThyCarouselTrigger = 'click';\n\n /**\n * 鼠标移动到指示器时是否暂停播放\n * @type false | hover\n */\n @Input() thyPause: ThyCarouselPause = 'hover';\n\n /**\n * 触发切换帧之前,返回 `{from: number, to: number}`\n */\n @Output() readonly thyBeforeChange = new EventEmitter<ThyCarouselSwitchData>();\n\n /**\n * 切换帧之后的回调,返回当前帧索引\n */\n @Output() readonly thyAfterChange = new EventEmitter<number>();\n\n private isDragging = false;\n\n private isTransitioning = false;\n\n private pointerVector: ThyDistanceVector = { x: 0, y: 0 };\n\n private engine: ThyCarouselEngine;\n\n private _trigger$ = new Subject<number | null>();\n\n private _destroy$ = new Subject<void>();\n\n wrapperDomRect: DOMRect;\n\n activeIndex: number = 0;\n\n wrapperEl: HTMLElement;\n\n transitionTimer: any = null;\n\n playTime: number = 400;\n\n isPause: boolean = false;\n\n private moveTo(index: number): void {\n if (this.carouselItems && this.carouselItems.length && !this.isTransitioning) {\n this.setInitialValue();\n const len = this.carouselItems.length;\n const from = this.activeIndex;\n const to = (index + len) % len;\n this.thyBeforeChange.emit({ from, to });\n this.isTransitioning = true;\n this.engine?.switch(index, this.activeIndex).subscribe(\n () => {\n this.activeIndex = to;\n this.markContentActive(this.activeIndex);\n this.scheduleNextTransition();\n this.thyAfterChange.emit(this.activeIndex);\n },\n () => {},\n () => {\n this.isTransitioning = false;\n }\n );\n this.cdr.markForCheck();\n }\n }\n\n private switchEngine(): void {\n switch (this.thyEffect) {\n case 'slide':\n this.engine = new ThyCarouselSlideEngine(this, this.cdr, this.renderer, this.platform);\n break;\n case 'fade':\n this.engine = new ThyCarouselFadeEngine(this, this.cdr, this.renderer, this.platform);\n break;\n default:\n this.engine = new ThyCarouselNoopEngine(this, this.cdr, this.renderer, this.platform);\n }\n }\n\n private markContentActive(index: number) {\n this.activeIndex = index;\n this.carouselItems.forEach((carouselContent: ThyCarouselItemDirective, i: number) => {\n carouselContent.isActive = index === i;\n });\n this.cdr.detectChanges();\n }\n\n private setInitialValue(): void {\n if (this.engine) {\n this.engine.initializeCarouselContents(this.carouselItems);\n }\n }\n\n private scheduleNextTransition(): void {\n this.clearScheduledTransition();\n if (this.thyAutoPlay && !this.isPause) {\n this.transitionTimer = setTimeout(() => {\n this.moveTo(this.activeIndex + 1);\n }, this.thyAutoPlayInterval);\n }\n }\n\n private clearScheduledTransition(): void {\n if (this.transitionTimer) {\n clearTimeout(this.transitionTimer);\n this.transitionTimer = null;\n }\n }\n\n onDrag(event: TouchEvent | MouseEvent): void {\n if (!this.isDragging && !this.isTransitioning && this.thyTouchable) {\n const mouseDownTime = new TinyDate().getTime();\n let mouseUpTime: number;\n this.clearScheduledTransition();\n this.wrapperDomRect = this.wrapperEl.getBoundingClientRect();\n this.carouselService.registerDrag(event).subscribe(\n pointerVector => {\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'grabbing');\n this.pointerVector = pointerVector;\n this.isDragging = true;\n this.engine?.dragging(this.pointerVector, this.wrapperDomRect);\n },\n () => {},\n () => {\n if (this.isDragging) {\n mouseUpTime = new TinyDate().getTime();\n const holdDownTime = mouseUpTime - mouseDownTime;\n // Fast enough to switch to the next frame\n // or\n // If the pointerVector is more than one third switch to the next frame\n if (\n Math.abs(this.pointerVector.x) > this.wrapperDomRect.width / 3 ||\n Math.abs(this.pointerVector.x) / holdDownTime >= 1\n ) {\n this.moveTo(this.pointerVector.x > 0 ? this.activeIndex - 1 : this.activeIndex + 1);\n } else {\n this.moveTo(this.activeIndex);\n }\n }\n this.isDragging = false;\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'grab');\n }\n );\n }\n }\n\n indicatorHandleClick(index: number): void {\n if (this.thyTrigger === 'click') {\n this.moveTo(index);\n }\n }\n\n indicatorHandleTrigger(index: number): void {\n if (this.thyPause === 'hover') {\n this.isPause = true;\n this.clearScheduledTransition();\n }\n if (this.thyTrigger === 'hover') {\n this._trigger$.next(index);\n }\n }\n\n indicatorHandleLeave() {\n if (this.thyPause === 'hover') {\n this.isPause = false;\n this.scheduleNextTransition();\n }\n }\n\n next(): void {\n this.moveTo(this.activeIndex + 1);\n }\n\n pre(): void {\n this.moveTo(this.activeIndex - 1);\n }\n\n ngOnInit(): void {\n this.wrapperEl = this.carouselWrapper!.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroy$), debounceTime(100))\n .subscribe(() => {\n this.engine?.correctionOffset();\n });\n });\n }\n ngOnChanges(changes: SimpleChanges) {\n const { thyEffect, thyTouchable } = changes;\n if (thyEffect && !thyEffect.isFirstChange()) {\n this.switchEngine();\n this.markContentActive(0);\n this.setInitialValue();\n }\n\n if (thyTouchable && !thyTouchable.isFirstChange()) {\n this.renderer.setStyle(this.wrapperEl, 'cursor', thyTouchable.currentValue ? 'grab' : 'default');\n }\n\n if (!this.thyAutoPlay || !this.thyAutoPlayInterval) {\n this.clearScheduledTransition();\n } else {\n this.scheduleNextTransition();\n }\n }\n\n ngAfterViewInit(): void {\n this.carouselItems.changes.subscribe(() => {\n this.markContentActive(0);\n this.setInitialValue();\n });\n this.switchEngine();\n this.markContentActive(0);\n this.setInitialValue();\n\n if (!this.thyTouchable) {\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'default');\n }\n }\n\n ngAfterContentInit() {\n this._trigger$.pipe(takeUntil(this._destroy$), debounceTime(this.playTime)).subscribe(index => {\n if (isNumber(index)) {\n this.moveTo(index);\n }\n });\n }\n\n ngOnDestroy() {\n this.clearScheduledTransition();\n this._trigger$.next(null);\n this._trigger$.complete();\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n @if (thyControls && carouselItems.length > 1) {\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext || defaultControlNext\"></ng-container>\n </div>\n }\n @if (thyIndicators) {\n <div class=\"thy-carousel-indicators\">\n @for (content of carouselItems; track $index; let i = $index) {\n <span\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\">\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"></ng-template>\n </span>\n }\n </div>\n }\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyCarousel } from './carousel.component';\nimport { ThyCarouselItemDirective } from './carousel-item.directive';\nimport { ThyDotModule } from 'ngx-tethys/dot';\nimport { ThyIconModule } from 'ngx-tethys/icon';\n\nconst COMPONENTS = [ThyCarousel, ThyCarouselItemDirective];\n\n@NgModule({\n exports: [...COMPONENTS],\n imports: [CommonModule, ThyDotModule, ThyIconModule, ...COMPONENTS]\n})\nexport class ThyCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-carousel.mjs","sources":["../../../src/carousel/carousel-item.directive.ts","../../../src/carousel/carousel.service.ts","../../../src/carousel/engine/carousel-base.ts","../../../src/carousel/engine/carousel-noop.ts","../../../src/carousel/engine/carousel-slide.ts","../../../src/carousel/engine/carousel-fade.ts","../../../src/carousel/carousel.token.ts","../../../src/carousel/carousel.component.ts","../../../src/carousel/carousel.component.html","../../../src/carousel/module.ts","../../../src/carousel/ngx-tethys-carousel.ts"],"sourcesContent":["import { Directive, ElementRef, Renderer2, inject } from '@angular/core';\n\n/**\n * @private\n */\n@Directive({\n selector: '[thyCarouselItem],[thy-carousel-item]',\n exportAs: 'thyCarouseItem'\n})\nexport class ThyCarouselItemDirective {\n private renderer = inject(Renderer2);\n\n private _active = false;\n\n readonly el: HTMLElement;\n\n set isActive(value: boolean) {\n this._active = value;\n if (this.isActive) {\n this.renderer.addClass(this.el, 'thy-carousel-item-active');\n } else {\n this.renderer.removeClass(this.el, 'thy-carousel-item-active');\n }\n }\n\n get isActive(): boolean {\n return this._active;\n }\n\n constructor() {\n const elementRef = inject(ElementRef);\n\n this.el = elementRef.nativeElement;\n this.renderer.addClass(elementRef.nativeElement, 'thy-carousel-item');\n }\n}\n","import { Injectable, NgZone, inject } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { ThyDistanceVector } from './typings';\n\n/**\n * @internal\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ThyCarouselService {\n private ngZone = inject(NgZone);\n\n private listeners = new Map<string, (event: MouseEvent | TouchEvent) => void>();\n private document: Document;\n\n documentDraggingOutside$ = new Subject<MouseEvent | Touch>();\n\n constructor() {\n const document = inject(DOCUMENT);\n\n this.document = document;\n }\n\n private clearListeners(): void {\n this.listeners.forEach((handler, name) => {\n this.document.removeEventListener(name, handler as EventListener);\n });\n this.listeners.clear();\n }\n\n private getEventPotions(event: MouseEvent | TouchEvent): MouseEvent | Touch {\n if (event instanceof MouseEvent) {\n return event;\n } else {\n return event.touches[0] || event.changedTouches[0];\n }\n }\n\n registerDrag(event: MouseEvent | TouchEvent): Observable<ThyDistanceVector> {\n if (this.documentDraggingOutside$) {\n this.documentDraggingOutside$.complete();\n }\n\n const startPoint = this.getEventPotions(event);\n\n this.documentDraggingOutside$ = new Subject<MouseEvent | Touch>();\n\n this.registerHandler(event);\n\n return this.documentDraggingOutside$.pipe(\n map(e => {\n return {\n x: e.pageX - startPoint!.pageX,\n y: e.pageY - startPoint!.pageY\n };\n })\n );\n }\n\n registerHandler(event: MouseEvent | TouchEvent) {\n this.clearListeners();\n const _isTouchEvent = event instanceof MouseEvent;\n const moveEvent = _isTouchEvent ? 'mousemove' : 'touchmove';\n const upEvent = _isTouchEvent ? 'mouseup' : 'touchend';\n const moveEventHandler = (e: MouseEvent | TouchEvent) => {\n this.documentDraggingOutside$.next(e instanceof MouseEvent ? e : e.touches[0] || e.changedTouches[0]);\n };\n const upEventHandler = () => {\n this.documentDraggingOutside$.complete();\n this.clearListeners();\n };\n this.listeners.set(moveEvent, moveEventHandler);\n this.listeners.set(upEvent, upEventHandler);\n this.ngZone.runOutsideAngular(() => {\n this.listeners.forEach((handler, name) => {\n this.document.addEventListener(name, handler as EventListener);\n });\n });\n }\n}\n","import { ChangeDetectorRef, Renderer2, QueryList } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable } from 'rxjs';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector, ThyCarouselEngine } from '../typings';\n\nexport abstract class ThyCarouselBaseEngine implements ThyCarouselEngine {\n protected contentWidth: number;\n protected contentHeight: number;\n protected readonly carouselComponent: IThyCarouselComponent;\n protected wrapperEl: HTMLElement;\n protected playTime: number;\n protected length: number;\n protected contents: ThyCarouselItemDirective[];\n\n protected get maxIndex(): number {\n return this.length - 1;\n }\n\n protected get firstEl(): HTMLElement {\n return this.contents[0].el;\n }\n\n protected get lastEl(): HTMLElement {\n return this.contents[this.maxIndex].el;\n }\n\n protected constructor(\n thyCarouselComponent: IThyCarouselComponent,\n protected cdr: ChangeDetectorRef,\n protected renderer: Renderer2,\n protected platform: Platform\n ) {\n this.carouselComponent = thyCarouselComponent;\n }\n\n initializeContents(contents: QueryList<ThyCarouselItemDirective> | null) {\n const carousel = this.carouselComponent!;\n const { wrapperEl, playTime } = carousel;\n this.wrapperEl = wrapperEl;\n this.playTime = playTime;\n const { width, height } = wrapperEl.getBoundingClientRect();\n this.contentHeight = height;\n this.contentWidth = width;\n\n this.contents = contents?.toArray();\n this.length = this.contents.length;\n if (this.platform.isBrowser && this.contents.length) {\n this.renderer.setStyle(this.wrapperEl, 'transform', 'translate3d(0, 0, 0)');\n this.renderer.setStyle(this.wrapperEl, `height`, `${this.contentHeight}px`);\n }\n this.contents.forEach(content => {\n content.el.removeAttribute('style');\n });\n }\n\n abstract dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void;\n\n abstract initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void;\n\n abstract switch(to: number, from: number): Observable<void>;\n\n correctionOffset(): void {\n const carousel = this.carouselComponent!;\n const { wrapperEl } = carousel;\n const { width, height } = wrapperEl.getBoundingClientRect();\n this.contentWidth = width;\n this.contentHeight = height;\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselNoopEngine extends ThyCarouselBaseEngine {\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {}\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n this.renderer.setStyle(\n this.wrapperEl,\n `transform`,\n `translate3d(${(-(to + this.length) % this.length) * this.contentWidth}px,0 , 0)`\n );\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n switch$.complete();\n }, 0);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {\n super.correctionOffset();\n const { activeIndex } = this.carouselComponent!;\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-activeIndex * this.contentWidth}px,0 , 0)`);\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselSlideEngine extends ThyCarouselBaseEngine {\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n private prepareHorizontalContext(activeIndex: number): void {\n if (activeIndex >= this.maxIndex) {\n this.renderer.setStyle(this.firstEl, 'left', `${this.length * this.contentWidth}px`);\n this.renderer.setStyle(this.lastEl, 'left', null);\n } else if (activeIndex <= 0) {\n this.renderer.setStyle(this.firstEl, 'left', null);\n this.renderer.setStyle(this.lastEl, 'left', `${-this.length * this.contentWidth}px`);\n } else {\n this.resetContext();\n }\n }\n\n private resetContext() {\n this.renderer.setStyle(this.lastEl, 'left', null);\n this.renderer.setStyle(this.firstEl, 'left', null);\n }\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {\n const { x } = pointerVector;\n const { width, height } = rect;\n this.contentWidth = width;\n this.contentHeight = height;\n const activeIndex = this.carouselComponent!.activeIndex;\n if (this.length > 1) {\n this.prepareHorizontalContext(activeIndex);\n }\n this.renderer.setStyle(this.wrapperEl, 'transform', `translate3d(${-activeIndex * this.contentWidth + x}px,0 , 0)`);\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n if (Math.abs(from - to) === 1 || from === to) {\n this.prepareHorizontalContext(to);\n }\n this.renderer.setStyle(this.wrapperEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-to * this.contentWidth}px,0 , 0)`);\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n this.resetContext();\n this.renderer.setStyle(this.wrapperEl, `transition-duration`, `0s`);\n this.renderer.setStyle(\n this.wrapperEl,\n `transform`,\n `translate3d(${-((to + this.length) % this.length) * this.contentWidth}px,0 , 0)`\n );\n switch$.complete();\n }, this.playTime);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {\n super.correctionOffset();\n const { activeIndex } = this.carouselComponent!;\n this.renderer.setStyle(this.wrapperEl, `transform`, `translate3d(${-activeIndex * this.contentWidth}px,0 , 0)`);\n }\n}\n","import { ChangeDetectorRef, QueryList, Renderer2 } from '@angular/core';\nimport { Platform } from '@angular/cdk/platform';\nimport { Observable, Subject } from 'rxjs';\nimport { IThyCarouselComponent } from '../carousel.token';\nimport { ThyDistanceVector } from '../typings';\nimport { ThyCarouselItemDirective } from '../carousel-item.directive';\nimport { ThyCarouselBaseEngine } from '../engine/carousel-base';\n\nexport class ThyCarouselFadeEngine extends ThyCarouselBaseEngine {\n contentsEl: HTMLElement[];\n\n constructor(thyCarouselComponent: IThyCarouselComponent, cdr: ChangeDetectorRef, renderer: Renderer2, platform: Platform) {\n super(thyCarouselComponent, cdr, renderer, platform);\n }\n\n dragging(pointerVector: ThyDistanceVector, rect: DOMRect): void {\n const { x } = pointerVector;\n const { width } = rect;\n const activeIndex = this.carouselComponent!.activeIndex;\n const currentContent = this.contentsEl[activeIndex];\n this.renderer.setStyle(currentContent, 'opacity', `${1 - Math.abs(x) / width}`);\n }\n\n initializeCarouselContents(contents: QueryList<ThyCarouselItemDirective> | null): void {\n this.initializeContents(contents);\n this.contentsEl = [];\n contents.forEach((content, index) => {\n this.contentsEl.push(content.el);\n this.renderer.setStyle(content.el, 'opacity', this.carouselComponent!.activeIndex === index ? '1' : '0');\n this.renderer.setStyle(content.el, 'position', 'absolute');\n this.renderer.setStyle(content.el, 'left', '0');\n this.renderer.setStyle(content.el, `transition-property`, 'opacity');\n this.renderer.setStyle(content.el, `transition-timing-function`, 'ease');\n });\n }\n\n switch(to: number, from: number): Observable<void> {\n const switch$ = new Subject<void>();\n const currentEl = this.contentsEl[from];\n const nextEl = this.contentsEl[(to + this.length) % this.length];\n this.renderer.setStyle(currentEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(nextEl, `transition-duration`, `${this.playTime}ms`);\n this.renderer.setStyle(currentEl, 'opacity', '0');\n this.renderer.setStyle(nextEl, 'opacity', '1');\n setTimeout(() => {\n switch$.next();\n }, 0);\n setTimeout(() => {\n this.renderer.setStyle(currentEl, `transition-duration`, `0s`);\n this.renderer.setStyle(nextEl, `transition-duration`, `0s`);\n switch$.complete();\n }, this.playTime);\n return switch$.asObservable();\n }\n\n correctionOffset(): void {}\n}\n","import { InjectionToken } from '@angular/core';\n\nexport interface IThyCarouselComponent {\n wrapperEl: HTMLElement;\n playTime: number;\n activeIndex: number;\n}\n\nexport const THY_CAROUSEL_COMPONENT = new InjectionToken<IThyCarouselComponent>('THY_CAROUSEL_COMPONENT');\n","import { Platform } from '@angular/cdk/platform';\nimport { NgTemplateOutlet } from '@angular/common';\nimport {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ElementRef,\n inject,\n NgZone,\n numberAttribute,\n OnDestroy,\n OnInit,\n Renderer2,\n TemplateRef,\n ViewEncapsulation,\n input,\n output,\n viewChild,\n QueryList,\n computed,\n ContentChildren,\n effect\n} from '@angular/core';\nimport { ThyDot } from 'ngx-tethys/dot';\nimport { ThyIcon } from 'ngx-tethys/icon';\nimport { coerceBooleanProperty, isNumber, TinyDate } from 'ngx-tethys/util';\nimport { fromEvent, Subject } from 'rxjs';\nimport { debounceTime, takeUntil } from 'rxjs/operators';\nimport { ThyCarouselItemDirective } from './carousel-item.directive';\nimport { ThyCarouselService } from './carousel.service';\nimport { ThyCarouselFadeEngine, ThyCarouselNoopEngine, ThyCarouselSlideEngine } from './engine';\nimport { ThyCarouselEffect, ThyCarouselPause, ThyCarouselSwitchData, ThyCarouselTrigger, ThyDistanceVector } from './typings';\nimport { IThyCarouselComponent, THY_CAROUSEL_COMPONENT } from './carousel.token';\n\n/**\n * 走马灯组件\n * @name thy-carousel\n */\n@Component({\n selector: 'thy-carousel',\n templateUrl: './carousel.component.html',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n preserveWhitespaces: false,\n host: {\n class: 'thy-carousel'\n },\n imports: [NgTemplateOutlet, ThyDot, ThyIcon],\n providers: [\n {\n provide: THY_CAROUSEL_COMPONENT,\n useExisting: ThyCarousel\n }\n ]\n})\nexport class ThyCarousel implements IThyCarouselComponent, OnInit, AfterViewInit, AfterContentInit, OnDestroy {\n protected renderer = inject(Renderer2);\n private cdr = inject(ChangeDetectorRef);\n private ngZone = inject(NgZone);\n private readonly carouselService = inject(ThyCarouselService);\n private readonly platform = inject(Platform);\n\n /**\n * @private\n */\n @ContentChildren(ThyCarouselItemDirective) carouselItems!: QueryList<ThyCarouselItemDirective>;\n\n /**\n * @private\n */\n readonly carouselWrapper = viewChild<ElementRef<HTMLElement>>('carouselWrapper');\n\n /**\n * 是否自动切换\n */\n readonly thyAutoPlay = input(false, { transform: coerceBooleanProperty });\n\n /**\n * 自动切换时间间隔(毫秒)\n */\n readonly thyAutoPlayInterval = input(3000, { transform: numberAttribute });\n\n /**\n * 切换动画样式\n * @type slide | fade | noop\n */\n readonly thyEffect = input<ThyCarouselEffect>('slide');\n\n /**\n * 是否显示切换指示器\n */\n readonly thyIndicators = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 指示器 Item 的渲染模板\n */\n readonly thyIndicatorRender = input<\n TemplateRef<{\n $implicit: boolean;\n }>\n >();\n\n /**\n * 是否显示左右切换\n */\n readonly thyControls = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 上一个控制器渲染模板\n */\n readonly thyControlPrev = input<TemplateRef<any>>();\n\n /**\n * 下一个控制器渲染模板\n */\n readonly thyControlNext = input<TemplateRef<any>>();\n\n /**\n * 是否支持手势滑动\n */\n readonly thyTouchable = input(true, { transform: coerceBooleanProperty });\n\n /**\n * 指示点切换的触发条件\n * @type click | hover\n */\n readonly thyTrigger = input<ThyCarouselTrigger>('click');\n\n /**\n * 鼠标移动到指示器时是否暂停播放\n * @type false | hover\n */\n readonly thyPause = input<ThyCarouselPause>('hover');\n\n /**\n * 触发切换帧之前,返回 `{from: number, to: number}`\n */\n readonly thyBeforeChange = output<ThyCarouselSwitchData>();\n\n /**\n * 切换帧之后的回调,返回当前帧索引\n */\n readonly thyAfterChange = output<number>();\n\n private isDragging = false;\n\n private isTransitioning = false;\n\n private pointerVector: ThyDistanceVector = { x: 0, y: 0 };\n\n readonly engine = computed(() => {\n switch (this.thyEffect()) {\n case 'slide':\n return new ThyCarouselSlideEngine(this, this.cdr, this.renderer, this.platform);\n\n case 'fade':\n return new ThyCarouselFadeEngine(this, this.cdr, this.renderer, this.platform);\n\n default:\n return new ThyCarouselNoopEngine(this, this.cdr, this.renderer, this.platform);\n }\n });\n\n private _trigger$ = new Subject<number | null>();\n\n private _destroy$ = new Subject<void>();\n\n wrapperDomRect: DOMRect;\n\n activeIndex: number = 0;\n\n wrapperEl: HTMLElement;\n\n transitionTimer: any = null;\n\n playTime: number = 400;\n\n isPause: boolean = false;\n\n constructor() {\n effect(() => {\n if (this.thyEffect()) {\n this.markContentActive(0);\n this.setInitialValue();\n }\n });\n\n effect(() => {\n if (this.thyTouchable()) {\n this.renderer.setStyle(this.wrapperEl, 'cursor', this.thyTouchable() ? 'grab' : 'default');\n }\n });\n\n effect(() => {\n if (!this.thyAutoPlay() || !this.thyAutoPlayInterval()) {\n this.clearScheduledTransition();\n } else {\n this.scheduleNextTransition();\n }\n });\n }\n\n private moveTo(index: number): void {\n const carouselItems = this.carouselItems;\n if (carouselItems && carouselItems.length && !this.isTransitioning) {\n this.setInitialValue();\n const len = carouselItems.length;\n const from = this.activeIndex;\n const to = (index + len) % len;\n this.thyBeforeChange.emit({ from, to });\n this.isTransitioning = true;\n this.engine()\n ?.switch(index, this.activeIndex)\n .subscribe(\n () => {\n this.activeIndex = to;\n this.markContentActive(this.activeIndex);\n this.scheduleNextTransition();\n this.thyAfterChange.emit(this.activeIndex);\n },\n () => {},\n () => {\n this.isTransitioning = false;\n }\n );\n this.cdr.markForCheck();\n }\n }\n\n private markContentActive(index: number) {\n this.activeIndex = index;\n this.carouselItems?.forEach((carouselContent: ThyCarouselItemDirective, i: number) => {\n carouselContent.isActive = index === i;\n });\n }\n\n private setInitialValue(): void {\n if (this.engine() && this.carouselItems) {\n this.engine()?.initializeCarouselContents(this.carouselItems);\n }\n }\n\n private scheduleNextTransition(): void {\n this.clearScheduledTransition();\n if (this.thyAutoPlay() && !this.isPause) {\n this.transitionTimer = setTimeout(() => {\n this.moveTo(this.activeIndex + 1);\n }, this.thyAutoPlayInterval());\n }\n }\n\n private clearScheduledTransition(): void {\n if (this.transitionTimer) {\n clearTimeout(this.transitionTimer);\n this.transitionTimer = null;\n }\n }\n\n onDrag(event: TouchEvent | MouseEvent): void {\n if (!this.isDragging && !this.isTransitioning && this.thyTouchable()) {\n const mouseDownTime = new TinyDate().getTime();\n let mouseUpTime: number;\n this.clearScheduledTransition();\n this.wrapperDomRect = this.wrapperEl.getBoundingClientRect();\n this.carouselService.registerDrag(event).subscribe(\n pointerVector => {\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'grabbing');\n this.pointerVector = pointerVector;\n this.isDragging = true;\n this.engine()?.dragging(this.pointerVector, this.wrapperDomRect);\n },\n () => {},\n () => {\n if (this.isDragging) {\n mouseUpTime = new TinyDate().getTime();\n const holdDownTime = mouseUpTime - mouseDownTime;\n // Fast enough to switch to the next frame\n // or\n // If the pointerVector is more than one third switch to the next frame\n if (\n Math.abs(this.pointerVector.x) > this.wrapperDomRect.width / 3 ||\n Math.abs(this.pointerVector.x) / holdDownTime >= 1\n ) {\n this.moveTo(this.pointerVector.x > 0 ? this.activeIndex - 1 : this.activeIndex + 1);\n } else {\n this.moveTo(this.activeIndex);\n }\n }\n this.isDragging = false;\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'grab');\n }\n );\n }\n }\n\n indicatorHandleClick(index: number): void {\n if (this.thyTrigger() === 'click') {\n this.moveTo(index);\n }\n }\n\n indicatorHandleTrigger(index: number): void {\n if (this.thyPause() === 'hover') {\n this.isPause = true;\n this.clearScheduledTransition();\n }\n if (this.thyTrigger() === 'hover') {\n this._trigger$.next(index);\n }\n }\n\n indicatorHandleLeave() {\n if (this.thyPause() === 'hover') {\n this.isPause = false;\n this.scheduleNextTransition();\n }\n }\n\n next(): void {\n this.moveTo(this.activeIndex + 1);\n }\n\n pre(): void {\n this.moveTo(this.activeIndex - 1);\n }\n\n ngOnInit(): void {\n this.wrapperEl = this.carouselWrapper()!.nativeElement;\n this.ngZone.runOutsideAngular(() => {\n fromEvent(window, 'resize')\n .pipe(takeUntil(this._destroy$), debounceTime(100))\n .subscribe(() => {\n this.engine()?.correctionOffset();\n });\n });\n }\n\n ngAfterViewInit(): void {\n this.carouselItems.changes.subscribe(() => {\n this.markContentActive(0);\n this.setInitialValue();\n });\n this.markContentActive(0);\n this.setInitialValue();\n if (!this.thyTouchable()) {\n this.renderer.setStyle(this.wrapperEl, 'cursor', 'default');\n }\n }\n\n ngAfterContentInit() {\n this._trigger$.pipe(takeUntil(this._destroy$), debounceTime(this.playTime)).subscribe(index => {\n if (isNumber(index)) {\n this.moveTo(index);\n }\n });\n }\n\n ngOnDestroy() {\n this.clearScheduledTransition();\n this._trigger$.next(null);\n this._trigger$.complete();\n this._destroy$.next();\n this._destroy$.complete();\n }\n}\n","<div class=\"thy-carousel thy-carousel-initialized thy-carousel-point-events\">\n <div #carouselWrapper class=\"thy-carousel-wrapper\" (mousedown)=\"onDrag($event)\" (touchstart)=\"onDrag($event)\">\n <ng-content></ng-content>\n </div>\n @if (thyControls() && carouselItems?.length > 1) {\n <div class=\"thy-carousel-control-pre-wrapper\" (click)=\"pre()\">\n <ng-container *ngTemplateOutlet=\"thyControlPrev() || defaultControlPrev\"></ng-container>\n </div>\n <div class=\"thy-carousel-control-next-wrapper\" (click)=\"next()\">\n <ng-container *ngTemplateOutlet=\"thyControlNext() || defaultControlNext\"></ng-container>\n </div>\n }\n @if (thyIndicators()) {\n <div class=\"thy-carousel-indicators\">\n @for (content of carouselItems; track $index; let i = $index) {\n <span\n class=\"thy-carousel-indicator\"\n (mouseenter)=\"indicatorHandleTrigger(i)\"\n (mouseleave)=\"indicatorHandleLeave()\"\n (click)=\"indicatorHandleClick(i)\">\n <ng-template\n [ngTemplateOutlet]=\"thyIndicatorRender() || defaultIndicatorRender\"\n [ngTemplateOutletContext]=\"{ $implicit: i === activeIndex }\"></ng-template>\n </span>\n }\n </div>\n }\n</div>\n\n<ng-template #defaultIndicatorRender let-active>\n <thy-dot [class.active]=\"active\"></thy-dot>\n</ng-template>\n\n<ng-template #defaultControlPrev>\n <div class=\"thy-carousel-control thy-carousel-control-pre\">\n <thy-icon thyIconName=\"angle-left-bold\"></thy-icon>\n </div>\n</ng-template>\n\n<ng-template #defaultControlNext>\n <div class=\"thy-carousel-control thy-carousel-control-next\">\n <thy-icon thyIconName=\"angle-right-bold\"></thy-icon>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyCarousel } from './carousel.component';\nimport { ThyCarouselItemDirective } from './carousel-item.directive';\nimport { ThyDotModule } from 'ngx-tethys/dot';\nimport { ThyIconModule } from 'ngx-tethys/icon';\n\nconst COMPONENTS = [ThyCarousel, ThyCarouselItemDirective];\n\n@NgModule({\n exports: [...COMPONENTS],\n imports: [CommonModule, ThyDotModule, ThyIconModule, ...COMPONENTS]\n})\nexport class ThyCarouselModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|