@taiga-ui/kit 2.53.0 → 2.55.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/bundles/taiga-ui-kit-components-input-files.umd.js +11 -5
- package/bundles/taiga-ui-kit-components-input-files.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-files.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-files.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js +1 -2
- package/bundles/taiga-ui-kit-components-input-month-range.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-month-range.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js +1 -0
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-input-phone-international.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-line-clamp.umd.js +32 -4
- package/bundles/taiga-ui-kit-components-line-clamp.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-line-clamp.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.js +148 -85
- package/bundles/taiga-ui-kit-components-slider.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-slider.umd.min.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.js +5 -3
- package/bundles/taiga-ui-kit-components-tabs.umd.js.map +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js +1 -1
- package/bundles/taiga-ui-kit-components-tabs.umd.min.js.map +1 -1
- package/components/input-files/taiga-ui-kit-components-input-files.metadata.json +1 -1
- package/components/input-phone-international/taiga-ui-kit-components-input-phone-international.metadata.json +1 -1
- package/components/line-clamp/index.d.ts +1 -0
- package/components/line-clamp/line-clamp-options.d.ts +7 -0
- package/components/line-clamp/line-clamp.component.d.ts +8 -3
- package/components/line-clamp/taiga-ui-kit-components-line-clamp.metadata.json +1 -1
- package/components/slider/{slider-key-steps.directive.d.ts → helpers/slider-key-steps.directive.d.ts} +1 -1
- package/components/slider/{slider-readonly.directive.d.ts → helpers/slider-readonly.directive.d.ts} +0 -0
- package/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.d.ts +12 -0
- package/components/slider/index.d.ts +3 -2
- package/components/slider/slider.component.d.ts +2 -1
- package/components/slider/taiga-ui-kit-components-slider.metadata.json +1 -1
- package/components/tabs/taiga-ui-kit-components-tabs.metadata.json +1 -1
- package/esm2015/components/input-files/input-files.module.js +10 -3
- package/esm2015/components/input-month-range/input-month-range.component.js +3 -4
- package/esm2015/components/input-phone-international/const/countries.js +2 -1
- package/esm2015/components/line-clamp/index.js +2 -1
- package/esm2015/components/line-clamp/line-clamp-options.js +12 -0
- package/esm2015/components/line-clamp/line-clamp.component.js +23 -8
- package/esm2015/components/slider/helpers/slider-key-steps.directive.js +103 -0
- package/esm2015/components/slider/helpers/slider-readonly.directive.js +79 -0
- package/esm2015/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.js +40 -0
- package/esm2015/components/slider/index.js +4 -3
- package/esm2015/components/slider/slider.component.js +12 -2
- package/esm2015/components/slider/slider.module.js +6 -3
- package/esm2015/components/tabs/tab/tab.component.js +1 -1
- package/esm2015/components/tabs/tabs-with-more/tabs-with-more.component.js +6 -4
- package/esm5/components/input-files/input-files.module.js +10 -3
- package/esm5/components/input-month-range/input-month-range.component.js +3 -4
- package/esm5/components/input-phone-international/const/countries.js +2 -1
- package/esm5/components/line-clamp/index.js +2 -1
- package/esm5/components/line-clamp/line-clamp-options.js +13 -0
- package/esm5/components/line-clamp/line-clamp.component.js +23 -8
- package/esm5/components/slider/helpers/slider-key-steps.directive.js +129 -0
- package/esm5/components/slider/helpers/slider-readonly.directive.js +87 -0
- package/esm5/components/slider/helpers/slider-thumb-label/slider-thumb-label.component.js +55 -0
- package/esm5/components/slider/index.js +4 -3
- package/esm5/components/slider/slider.component.js +12 -2
- package/esm5/components/slider/slider.module.js +6 -3
- package/esm5/components/tabs/tab/tab.component.js +1 -1
- package/esm5/components/tabs/tabs-with-more/tabs-with-more.component.js +6 -4
- package/fesm2015/taiga-ui-kit-components-input-files.js +9 -2
- package/fesm2015/taiga-ui-kit-components-input-files.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-month-range.js +2 -3
- package/fesm2015/taiga-ui-kit-components-input-month-range.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js +1 -0
- package/fesm2015/taiga-ui-kit-components-input-phone-international.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-line-clamp.js +33 -8
- package/fesm2015/taiga-ui-kit-components-line-clamp.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-slider.js +122 -75
- package/fesm2015/taiga-ui-kit-components-slider.js.map +1 -1
- package/fesm2015/taiga-ui-kit-components-tabs.js +6 -4
- package/fesm2015/taiga-ui-kit-components-tabs.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-files.js +9 -2
- package/fesm5/taiga-ui-kit-components-input-files.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-month-range.js +2 -3
- package/fesm5/taiga-ui-kit-components-input-month-range.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-input-phone-international.js +1 -0
- package/fesm5/taiga-ui-kit-components-input-phone-international.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-line-clamp.js +34 -9
- package/fesm5/taiga-ui-kit-components-line-clamp.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-slider.js +149 -87
- package/fesm5/taiga-ui-kit-components-slider.js.map +1 -1
- package/fesm5/taiga-ui-kit-components-tabs.js +6 -4
- package/fesm5/taiga-ui-kit-components-tabs.js.map +1 -1
- package/package.json +5 -5
- package/esm2015/components/slider/slider-key-steps.directive.js +0 -102
- package/esm2015/components/slider/slider-readonly.directive.js +0 -79
- package/esm5/components/slider/slider-key-steps.directive.js +0 -128
- package/esm5/components/slider/slider-readonly.directive.js +0 -87
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-kit-components-tabs.js","sources":["ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts","ng://@taiga-ui/kit/components/tabs/taiga-ui-kit-components-tabs.ts"],"sourcesContent":["import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: `ng-template[tuiTab]`,\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = 'tui-tab-activate';\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n 'Stream of tab activation events',\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches('button') ? typedFromEvent(nativeElement, 'click') : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector: `a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]`,\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n 'Default parameters for tabs component',\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>('Refresh stream');\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.options.exposeActive || this.lastVisibleIndex >= this.activeItemIndex\n ? this.tabs[this.activeItemIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = tabs[tabs.length - 1].scrollWidth;\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n moreWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced =\n this.options.exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return 0;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n if (this.activeItemIndex === activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"taiga-ui-kit-components-tabs.js","sources":["ng://@taiga-ui/kit/components/tabs/tab.directive.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.providers.ts","ng://@taiga-ui/kit/components/tabs/tab/tab.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-options.ts","ng://@taiga-ui/kit/components/tabs/tabs/tabs.component.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.providers.ts","ng://@taiga-ui/kit/components/tabs/tabs-with-more/tabs-with-more.component.ts","ng://@taiga-ui/kit/components/tabs/underline/underline.component.ts","ng://@taiga-ui/kit/components/tabs/tabs.module.ts","ng://@taiga-ui/kit/components/tabs/taiga-ui-kit-components-tabs.ts"],"sourcesContent":["import {Directive, Inject, TemplateRef} from '@angular/core';\n\n@Directive({\n selector: `ng-template[tuiTab]`,\n})\nexport class TuiTabDirective {\n constructor(\n @Inject(TemplateRef) readonly template: TemplateRef<Record<string, unknown>>,\n ) {}\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ElementRef, InjectionToken, Optional, Provider} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {MutationObserverService} from '@ng-web-apis/mutation-observer';\nimport {\n tuiCustomEvent,\n TuiDestroyService,\n TuiFocusVisibleService,\n typedFromEvent,\n} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TuiRouterLinkActiveService} from '@taiga-ui/core';\nimport {EMPTY, identity, merge, Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nexport const TUI_TAB_ACTIVATE = 'tui-tab-activate';\nexport const TUI_TAB_EVENT = new InjectionToken<Observable<Event>>(\n 'Stream of tab activation events',\n);\nexport const TUI_TAB_PROVIDERS: Provider[] = [\n TuiDestroyService,\n TuiFocusVisibleService,\n TuiRouterLinkActiveService,\n {\n provide: TUI_TAB_EVENT,\n deps: [\n ElementRef,\n DOCUMENT,\n TuiRouterLinkActiveService,\n [new Optional(), MutationObserverService],\n [new Optional(), RouterLinkActive],\n ],\n useFactory: tabActiveFactory,\n },\n MODE_PROVIDER,\n];\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabActiveFactory(\n {nativeElement}: ElementRef<HTMLElement>,\n documentRef: Document,\n routerLinkActiveService: Observable<boolean>,\n mutationObserverService: MutationObserverService | null,\n routerLinkActive: RouterLinkActive | null,\n): Observable<unknown> {\n const mutationObserver =\n routerLinkActive && mutationObserverService\n ? mutationObserverService.pipe(filter(() => routerLinkActive.isActive))\n : EMPTY;\n\n return merge(\n mutationObserver,\n routerLinkActiveService.pipe(filter(identity)),\n nativeElement.matches('button') ? typedFromEvent(nativeElement, 'click') : EMPTY,\n ).pipe(\n map(() =>\n nativeElement.dispatchEvent(\n tuiCustomEvent(TUI_TAB_ACTIVATE, {bubbles: true}, documentRef),\n ),\n ),\n );\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n Inject,\n OnDestroy,\n Optional,\n} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {\n isNativeFocused,\n setNativeFocused,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n TuiFocusVisibleService,\n} from '@taiga-ui/cdk';\nimport {TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\n\nimport {TUI_TAB_EVENT, TUI_TAB_PROVIDERS} from './tab.providers';\n\n@Component({\n selector: `a[tuiTab]:not([routerLink]), a[tuiTab][routerLink][routerLinkActive], button[tuiTab]`,\n templateUrl: './tab.template.html',\n styleUrls: ['./tab.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_TAB_PROVIDERS,\n host: {\n '($.data-mode.attr)': 'mode$',\n '[style.--tui-tab-margin.px]': 'margin',\n type: 'button',\n },\n})\nexport class TuiTabComponent implements OnDestroy {\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n @HostBinding('class._focus-visible')\n focusVisible = false;\n\n constructor(\n @Optional()\n @Inject(RouterLinkActive)\n private readonly routerLinkActive: RouterLinkActive | null,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n @Inject(TUI_TAB_EVENT) readonly event$: Observable<Event>,\n @Inject(TUI_TAB_MARGIN) readonly margin: number,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TuiFocusVisibleService) focusVisible$: TuiFocusVisibleService,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n focusVisible$.subscribe(visible => {\n this.focusVisible = visible;\n });\n }\n\n @HostBinding('class._active')\n get isActive(): boolean {\n return !!this.routerLinkActive && this.routerLinkActive.isActive;\n }\n\n ngOnDestroy(): void {\n if (isNativeFocused(this.elementRef.nativeElement)) {\n setNativeFocused(this.elementRef.nativeElement, false);\n }\n }\n}\n","import {InjectionToken, ValueProvider} from '@angular/core';\n\nexport interface TuiTabsOptions {\n readonly underline: boolean;\n readonly exposeActive: boolean;\n readonly itemsLimit: number;\n}\n\nexport const TUI_TABS_DEFAULT_OPTIONS: TuiTabsOptions = {\n underline: true,\n exposeActive: true,\n itemsLimit: Infinity,\n};\n\nexport const TUI_TABS_OPTIONS = new InjectionToken<TuiTabsOptions>(\n 'Default parameters for tabs component',\n {\n factory: () => TUI_TABS_DEFAULT_OPTIONS,\n },\n);\n\nexport const tuiTabsOptionsProvider: (\n options: Partial<TuiTabsOptions>,\n) => ValueProvider = (options: Partial<TuiTabsOptions>) => ({\n provide: TUI_TABS_OPTIONS,\n useValue: {...TUI_TABS_DEFAULT_OPTIONS, ...options},\n});\n","import {\n AfterViewChecked,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n forwardRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n Output,\n QueryList,\n Renderer2,\n} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {\n EMPTY_QUERY,\n moveFocus,\n TUI_IS_ANDROID,\n TUI_IS_IOS,\n tuiDefaultProp,\n TuiDestroyService,\n TuiResizeService,\n} from '@taiga-ui/cdk';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {Observable} from 'rxjs';\nimport {filter} from 'rxjs/operators';\n\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TAB_ACTIVATE} from '../tab/tab.providers';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\n\nconst TAB_ACTIVE_CLASS = '_active';\n\n// TODO: 3.0 remove in ivy compilation\nexport const OBSERVER_INIT = {\n childList: true,\n};\n\n// @dynamic\n@Component({\n selector: 'tui-tabs, nav[tuiTabs]',\n templateUrl: './tabs.template.html',\n styleUrls: ['./tabs.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n TuiDestroyService,\n TuiResizeService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: OBSERVER_INIT,\n },\n ],\n})\nexport class TuiTabsComponent implements AfterViewChecked {\n @ContentChildren(forwardRef(() => TuiTabComponent))\n readonly children: QueryList<unknown> = EMPTY_QUERY;\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input('activeItemIndex')\n set activeItemIndexSetter(index: number) {\n this.activeItemIndex = index;\n this.scrollTo(this.tabs[index]);\n }\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @HostBinding('class._ios')\n readonly isIos: boolean;\n\n @HostBinding('class._android')\n readonly isAndroid: boolean;\n\n activeItemIndex = 0;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(Renderer2) private readonly renderer: Renderer2,\n @Inject(ChangeDetectorRef) changeDetectorRef: ChangeDetectorRef,\n @Inject(TuiResizeService) resize$: Observable<void>,\n @Inject(TUI_IS_IOS) isIos: boolean,\n @Inject(TUI_IS_ANDROID) isAndroid: boolean,\n @Inject(TUI_MOBILE_AWARE) mobileAware: boolean,\n ) {\n this.isIos = mobileAware && isIos;\n this.isAndroid = mobileAware && isAndroid;\n\n resize$.pipe(filter(() => this.underline)).subscribe(() => {\n changeDetectorRef.detectChanges();\n });\n }\n\n get tabs(): readonly HTMLElement[] {\n return Array.from(\n this.elementRef.nativeElement.querySelectorAll<HTMLElement>('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n return this.tabs[this.activeItemIndex] || null;\n }\n\n @HostListener(`${TUI_TAB_ACTIVATE}.stop`, ['$event.target'])\n onActivate(element: HTMLElement): void {\n const index = this.tabs.findIndex(tab => tab === element);\n\n if (index === this.activeItemIndex) {\n return;\n }\n\n this.activeItemIndexSetter = index;\n this.activeItemIndexChange.emit(index);\n }\n\n @HostListener('keydown.arrowRight.prevent', ['$event.target', '1'])\n @HostListener('keydown.arrowLeft.prevent', ['$event.target', '-1'])\n onKeyDownArrow(current: HTMLElement, step: number): void {\n const {tabs} = this;\n\n moveFocus(tabs.indexOf(current), tabs, step);\n }\n\n ngAfterViewChecked(): void {\n const {tabs, activeElement} = this;\n\n tabs.forEach(nativeElement => {\n this.renderer.removeClass(nativeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(nativeElement, 'tabIndex', '-1');\n });\n\n if (activeElement) {\n this.renderer.addClass(activeElement, TAB_ACTIVE_CLASS);\n this.renderer.setAttribute(activeElement, 'tabIndex', '0');\n }\n }\n\n private scrollTo(element?: HTMLElement): void {\n if (!element) {\n return;\n }\n\n const {offsetLeft, offsetWidth} = element;\n const {nativeElement} = this.elementRef;\n\n if (offsetLeft < nativeElement.scrollLeft) {\n nativeElement.scrollLeft = offsetLeft;\n }\n\n if (\n offsetLeft + offsetWidth >\n nativeElement.scrollLeft + nativeElement.offsetWidth\n ) {\n nativeElement.scrollLeft =\n offsetLeft + offsetWidth - nativeElement.offsetWidth;\n }\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {ChangeDetectorRef, ElementRef, InjectionToken, Provider} from '@angular/core';\nimport {\n MUTATION_OBSERVER_INIT,\n MutationObserverService,\n} from '@ng-web-apis/mutation-observer';\nimport {TuiDestroyService, TuiResizeService} from '@taiga-ui/cdk';\nimport {merge, Observable} from 'rxjs';\nimport {debounceTime, filter, startWith, takeUntil, tap} from 'rxjs/operators';\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport function tabsRefreshFactory(\n resize$: Observable<unknown>,\n mutations$: Observable<unknown>,\n destroy$: Observable<unknown>,\n {body}: Document,\n {nativeElement}: ElementRef<Node>,\n changeDetectorRef: ChangeDetectorRef,\n): Observable<unknown> {\n return merge(\n resize$,\n mutations$.pipe(tap(() => changeDetectorRef.detectChanges())),\n ).pipe(\n // Ignoring cases when host is detached from DOM\n filter(() => body.contains(nativeElement)),\n debounceTime(0),\n startWith(null),\n takeUntil(destroy$),\n );\n}\n\n// TODO: 3.0 remove in ivy compilation\nexport const MUTATION_CONFIG = {\n childList: true,\n subtree: true,\n characterData: true,\n};\nexport const TABS_REFRESH = new InjectionToken<Observable<unknown>>('Refresh stream');\nexport const TABS_PROVIDERS: Provider[] = [\n TuiResizeService,\n TuiDestroyService,\n MutationObserverService,\n {\n provide: MUTATION_OBSERVER_INIT,\n useValue: MUTATION_CONFIG,\n },\n {\n provide: TABS_REFRESH,\n deps: [\n TuiResizeService,\n MutationObserverService,\n TuiDestroyService,\n DOCUMENT,\n ElementRef,\n ChangeDetectorRef,\n ],\n useFactory: tabsRefreshFactory,\n },\n];\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostBinding,\n Inject,\n Input,\n Output,\n QueryList,\n TemplateRef,\n ViewChild,\n} from '@angular/core';\nimport {\n EMPTY_QUERY,\n getClosestFocusable,\n isNativeFocused,\n setNativeFocused,\n toInt,\n TuiActiveZoneDirective,\n tuiAssertIsHTMLElement,\n tuiClamp,\n TuiContextWithImplicit,\n tuiDefaultProp,\n} from '@taiga-ui/cdk';\nimport {TUI_MORE_WORD, TUI_TAB_MARGIN} from '@taiga-ui/kit/tokens';\nimport {PolymorpheusContent} from '@tinkoff/ng-polymorpheus';\nimport {Observable} from 'rxjs';\nimport {filter, map} from 'rxjs/operators';\n\nimport {TuiTabDirective} from '../tab.directive';\nimport {TuiTabComponent} from '../tab/tab.component';\nimport {TUI_TABS_OPTIONS, TuiTabsOptions} from '../tabs-options';\nimport {TABS_PROVIDERS, TABS_REFRESH} from './tabs-with-more.providers';\n\n// @dynamic\n@Component({\n selector: 'tui-tabs-with-more, nav[tuiTabsWithMore]',\n templateUrl: './tabs-with-more.template.html',\n styleUrls: ['./tabs-with-more.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TABS_PROVIDERS,\n})\nexport class TuiTabsWithMoreComponent implements AfterViewInit {\n @ViewChild(TuiTabComponent, {read: ElementRef})\n private readonly moreButton?: ElementRef<HTMLButtonElement>;\n\n private maxIndex = Infinity;\n\n @Input()\n @tuiDefaultProp()\n moreContent: PolymorpheusContent = '';\n\n @Input()\n @tuiDefaultProp()\n dropdownContent: PolymorpheusContent<TuiContextWithImplicit<TuiActiveZoneDirective>> =\n '';\n\n @Input()\n @HostBinding('class._underline')\n @tuiDefaultProp()\n underline = this.options.underline;\n\n @Input()\n @tuiDefaultProp()\n activeItemIndex = 0;\n\n @Input()\n @tuiDefaultProp()\n itemsLimit = this.options.itemsLimit;\n\n @Output()\n readonly activeItemIndexChange = new EventEmitter<number>();\n\n @ContentChildren(TuiTabDirective, {read: TemplateRef})\n readonly items: QueryList<TemplateRef<Record<string, unknown>>> = EMPTY_QUERY;\n\n open = false;\n\n constructor(\n @Inject(TUI_TABS_OPTIONS) private readonly options: TuiTabsOptions,\n @Inject(TUI_TAB_MARGIN) private readonly margin: number,\n @Inject(TABS_REFRESH) private readonly refresh$: Observable<unknown>,\n @Inject(ElementRef) private readonly elementRef: ElementRef<HTMLElement>,\n @Inject(ChangeDetectorRef) private readonly changeDetectorRef: ChangeDetectorRef,\n @Inject(TUI_MORE_WORD) readonly moreWord$: Observable<string>,\n ) {}\n\n // TODO: Improve performance\n get tabs(): readonly HTMLElement[] {\n return Array.from<HTMLElement>(\n this.elementRef.nativeElement.querySelectorAll('[tuiTab]'),\n );\n }\n\n get activeElement(): HTMLElement | null {\n const {tabs} = this;\n const safeActiveIndex = tuiClamp(this.activeItemIndex || 0, 0, tabs.length - 2);\n\n return this.options.exposeActive || this.lastVisibleIndex >= safeActiveIndex\n ? tabs[safeActiveIndex] || null\n : this.moreButton?.nativeElement || null;\n }\n\n get isMoreVisible(): boolean {\n return this.lastVisibleIndex < this.items.length - 1;\n }\n\n get isMoreFocusable(): boolean {\n return !!this.moreButton && isNativeFocused(this.moreButton.nativeElement);\n }\n\n get isMoreActive(): boolean {\n return (\n this.open ||\n (!this.options.exposeActive && this.lastVisibleIndex < this.activeItemIndex)\n );\n }\n\n get lastVisibleIndex(): number {\n if (this.itemsLimit + 1 >= this.items.length) {\n return this.maxIndex;\n }\n\n const offset =\n this.itemsLimit - 1 > this.activeItemIndex || !this.options.exposeActive\n ? 1\n : 2;\n\n return Math.min(this.itemsLimit - offset, this.maxIndex);\n }\n\n ngAfterViewInit(): void {\n this.refresh$\n .pipe(\n map(() => this.getMaxIndex()),\n filter(maxIndex => this.maxIndex !== maxIndex),\n )\n .subscribe(maxIndex => {\n this.maxIndex = maxIndex;\n this.changeDetectorRef.detectChanges();\n });\n }\n\n onActiveItemIndexChange(activeItemIndex: number): void {\n this.updateActiveItemIndex(activeItemIndex);\n }\n\n onClick(index: number): void {\n this.open = false;\n this.focusMore();\n this.updateActiveItemIndex(index);\n }\n\n onArrowRight(event: Event): void {\n tuiAssertIsHTMLElement(event.target);\n\n if (isNativeFocused(event.target)) {\n this.focusMore();\n }\n }\n\n onArrowLeft(): void {\n const {tabs} = this;\n let index = tabs.length - 2;\n\n while (index >= 0) {\n setNativeFocused(tabs[index]);\n\n if (isNativeFocused(tabs[index])) {\n return;\n }\n\n index--;\n }\n }\n\n onWrapperArrow(event: Event, wrapper: HTMLElement, prev: boolean): void {\n const button: HTMLButtonElement = event.target as HTMLButtonElement;\n const target = getClosestFocusable(button, prev, wrapper);\n\n if (target) {\n setNativeFocused(target);\n }\n }\n\n isOverflown(index: number): boolean {\n return index !== this.activeItemIndex || !this.options.exposeActive;\n }\n\n shouldShow(index: number): boolean {\n return index > this.lastVisibleIndex && this.isOverflown(index);\n }\n\n private focusMore(): void {\n if (this.moreButton) {\n setNativeFocused(this.moreButton.nativeElement);\n }\n }\n\n private getMaxIndex(): number {\n const {tabs, activeItemIndex, margin} = this;\n\n if (tabs.length < 2) {\n return 0;\n }\n\n const {clientWidth} = this.elementRef.nativeElement;\n const activeWidth = tabs[activeItemIndex] ? tabs[activeItemIndex].scrollWidth : 0;\n const moreWidth = tabs[tabs.length - 1].scrollWidth;\n let maxIndex = tabs.length - 2;\n let total =\n tabs.reduce((acc, {scrollWidth}) => acc + scrollWidth, 0) +\n maxIndex * margin -\n moreWidth;\n\n if (total <= clientWidth) {\n return Infinity;\n }\n\n while (maxIndex) {\n total -= tabs[maxIndex].scrollWidth + margin;\n maxIndex--;\n\n const activeDisplaced =\n this.options.exposeActive && activeItemIndex > maxIndex;\n const activeOffset = activeDisplaced ? activeWidth + margin : 0;\n const currentWidth = total + activeOffset + moreWidth + margin;\n // Needed for different rounding of visible and hidden elements scrollWidth\n const safetyOffset = toInt(this.maxIndex === maxIndex - 1);\n\n if (currentWidth + safetyOffset < clientWidth) {\n return maxIndex;\n }\n }\n\n return 0;\n }\n\n private updateActiveItemIndex(activeItemIndex: number): void {\n if (this.activeItemIndex === activeItemIndex) {\n return;\n }\n\n this.activeItemIndex = activeItemIndex;\n this.activeItemIndexChange.emit(activeItemIndex);\n this.maxIndex = this.getMaxIndex();\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n HostBinding,\n HostListener,\n Inject,\n Input,\n NgZone,\n} from '@angular/core';\nimport {ANIMATION_FRAME} from '@ng-web-apis/common';\nimport {px, TUI_IS_ANDROID, TUI_IS_IOS, tuiDefaultProp, tuiZonefree} from '@taiga-ui/cdk';\nimport {MODE_PROVIDER, TUI_MODE, TuiBrightness} from '@taiga-ui/core';\nimport {TUI_MOBILE_AWARE} from '@taiga-ui/kit/tokens';\nimport {asCallable} from '@tinkoff/ng-event-plugins';\nimport {Observable, of, ReplaySubject} from 'rxjs';\nimport {debounceTime, map, mapTo, share, switchMap} from 'rxjs/operators';\n\n@Component({\n selector: 'tui-underline',\n template: '',\n styleUrls: ['./underline.style.less'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [MODE_PROVIDER],\n host: {\n '($.data-mode.attr)': 'mode$',\n },\n})\nexport class TuiUnderlineComponent {\n private readonly element$ = new ReplaySubject<HTMLElement | null>(1);\n\n private readonly refresh$ = this.element$.pipe(\n switchMap(element =>\n element\n ? this.animationFrame$.pipe(mapTo(element), tuiZonefree(this.ngZone))\n : of(null),\n ),\n share(),\n );\n\n @Input()\n @tuiDefaultProp()\n set element(element: HTMLElement | null) {\n this.element$.next(element);\n }\n\n @HostBinding('class._ios')\n readonly isIos = this.mobileAware && this.ios;\n\n @HostBinding('class._android')\n readonly isAndroid = this.mobileAware && this.android;\n\n @HostListener('$.style.transitionProperty')\n readonly transition$ = asCallable(\n this.element$.pipe(\n map(element => element && 'all'),\n debounceTime(50),\n ),\n );\n\n @HostListener('$.style.transform')\n readonly transform$ = asCallable(\n this.refresh$.pipe(\n map(element =>\n element ? `translate3d(${px(element.offsetLeft)}, 0, 0)` : null,\n ),\n ),\n );\n\n @HostListener('$.style.width.px')\n readonly width$ = asCallable(\n this.refresh$.pipe(map(element => element?.clientWidth || 0)),\n );\n\n constructor(\n @Inject(ElementRef) {nativeElement}: ElementRef,\n @Inject(NgZone) private readonly ngZone: NgZone,\n @Inject(ANIMATION_FRAME) private readonly animationFrame$: Observable<number>,\n @Inject(TUI_MOBILE_AWARE) private readonly mobileAware: boolean,\n @Inject(TUI_IS_IOS) private readonly ios: boolean,\n @Inject(TUI_IS_ANDROID) private readonly android: boolean,\n @Inject(TUI_MODE) readonly mode$: Observable<TuiBrightness | null>,\n ) {\n nativeElement['$.style.transitionProperty'] = this.transition$;\n nativeElement['$.style.transform'] = this.transform$;\n nativeElement['$.style.width.px'] = this.width$;\n }\n}\n","import {CommonModule} from '@angular/common';\nimport {NgModule} from '@angular/core';\nimport {TuiFocusableModule} from '@taiga-ui/cdk';\nimport {TuiHostedDropdownModule, TuiSvgModule} from '@taiga-ui/core';\nimport {PolymorpheusModule} from '@tinkoff/ng-polymorpheus';\n\nimport {TuiTabDirective} from './tab.directive';\nimport {TuiTabComponent} from './tab/tab.component';\nimport {TuiTabsComponent} from './tabs/tabs.component';\nimport {TuiTabsWithMoreComponent} from './tabs-with-more/tabs-with-more.component';\nimport {TuiUnderlineComponent} from './underline/underline.component';\n\n@NgModule({\n imports: [\n CommonModule,\n TuiHostedDropdownModule,\n TuiSvgModule,\n TuiFocusableModule,\n PolymorpheusModule,\n ],\n declarations: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiUnderlineComponent,\n TuiTabDirective,\n ],\n exports: [\n TuiTabsWithMoreComponent,\n TuiTabsComponent,\n TuiTabComponent,\n TuiTabDirective,\n ],\n})\nexport class TuiTabsModule {}\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": "2.
|
|
3
|
+
"version": "2.55.0",
|
|
4
4
|
"description": "Taiga UI Angular main components kit",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|
|
@@ -23,10 +23,10 @@
|
|
|
23
23
|
"@angular/forms": ">=9.0.0",
|
|
24
24
|
"@angular/router": ">=9.0.0",
|
|
25
25
|
"@ng-web-apis/common": ">=1.12.1 < 2",
|
|
26
|
-
"@ng-web-apis/mutation-observer": ">=1.1.0",
|
|
27
|
-
"@taiga-ui/cdk": ">=2.
|
|
28
|
-
"@taiga-ui/core": ">=2.
|
|
29
|
-
"@taiga-ui/i18n": ">=2.
|
|
26
|
+
"@ng-web-apis/mutation-observer": ">=1.1.0 < 2",
|
|
27
|
+
"@taiga-ui/cdk": ">=2.55.0",
|
|
28
|
+
"@taiga-ui/core": ">=2.55.0",
|
|
29
|
+
"@taiga-ui/i18n": ">=2.55.0",
|
|
30
30
|
"@tinkoff/ng-polymorpheus": ">=3.1.12 < 4",
|
|
31
31
|
"rxjs": ">=6.0.0"
|
|
32
32
|
},
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Directive, ElementRef, HostListener, Inject, Input, Optional, Output, Pipe, PipeTransform, Self, } from '@angular/core';
|
|
3
|
-
import { NgControl } from '@angular/forms';
|
|
4
|
-
import { AbstractTuiControl, clamp, isNativeFocused, tuiAssert, tuiDefaultProp, typedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { tuiCheckKeyStepsHaveMinMaxPercents, tuiKeyStepValueToPercentage, tuiPercentageToKeyStepValue, } from '@taiga-ui/kit/utils';
|
|
6
|
-
import { map } from 'rxjs/operators';
|
|
7
|
-
import { TuiSliderComponent } from './slider.component';
|
|
8
|
-
// @dynamic
|
|
9
|
-
let TuiSliderKeyStepsDirective = class TuiSliderKeyStepsDirective extends AbstractTuiControl {
|
|
10
|
-
constructor(control, changeDetectorRef, elementRef, slider) {
|
|
11
|
-
super(control, changeDetectorRef);
|
|
12
|
-
this.elementRef = elementRef;
|
|
13
|
-
this.slider = slider;
|
|
14
|
-
this.keySteps = [];
|
|
15
|
-
this.keyStepsInput = typedFromEvent(this.elementRef.nativeElement, 'input').pipe(map(() => this.controlValue));
|
|
16
|
-
}
|
|
17
|
-
get nativeFocusableElement() {
|
|
18
|
-
return this.computedDisabled ? null : this.elementRef.nativeElement;
|
|
19
|
-
}
|
|
20
|
-
get focused() {
|
|
21
|
-
return isNativeFocused(this.nativeFocusableElement);
|
|
22
|
-
}
|
|
23
|
-
get min() {
|
|
24
|
-
var _a;
|
|
25
|
-
return ((_a = this.keySteps[0]) === null || _a === void 0 ? void 0 : _a[1]) || 0;
|
|
26
|
-
}
|
|
27
|
-
get max() {
|
|
28
|
-
var _a;
|
|
29
|
-
return ((_a = this.keySteps[this.keySteps.length - 1]) === null || _a === void 0 ? void 0 : _a[1]) || 100;
|
|
30
|
-
}
|
|
31
|
-
get controlValue() {
|
|
32
|
-
return tuiPercentageToKeyStepValue(this.slider.valuePercentage, this.keySteps);
|
|
33
|
-
}
|
|
34
|
-
updateControlValue() {
|
|
35
|
-
this.updateValue(this.controlValue);
|
|
36
|
-
}
|
|
37
|
-
writeValue(controlValue) {
|
|
38
|
-
if (controlValue === null) {
|
|
39
|
-
return;
|
|
40
|
-
}
|
|
41
|
-
const clampedControlValue = clamp(controlValue, this.min, this.max);
|
|
42
|
-
tuiAssert.assert(controlValue === clampedControlValue, '\n[SliderKeySteps]: You cannot programmatically set value which is less/more than min/max');
|
|
43
|
-
this.slider.value = this.transformToNativeValue(clampedControlValue);
|
|
44
|
-
}
|
|
45
|
-
getFallbackValue() {
|
|
46
|
-
return 0;
|
|
47
|
-
}
|
|
48
|
-
transformToNativeValue(controlValue) {
|
|
49
|
-
const { min, max } = this.slider;
|
|
50
|
-
const newValuePercentage = tuiKeyStepValueToPercentage(controlValue, this.keySteps);
|
|
51
|
-
return (newValuePercentage * (max - min)) / 100 + min;
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
TuiSliderKeyStepsDirective.ctorParameters = () => [
|
|
55
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
56
|
-
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
|
|
57
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
58
|
-
{ type: TuiSliderComponent, decorators: [{ type: Inject, args: [TuiSliderComponent,] }] }
|
|
59
|
-
];
|
|
60
|
-
__decorate([
|
|
61
|
-
Input(),
|
|
62
|
-
tuiDefaultProp(tuiCheckKeyStepsHaveMinMaxPercents, 'Should contain min and max values')
|
|
63
|
-
], TuiSliderKeyStepsDirective.prototype, "keySteps", void 0);
|
|
64
|
-
__decorate([
|
|
65
|
-
Output()
|
|
66
|
-
], TuiSliderKeyStepsDirective.prototype, "keyStepsInput", void 0);
|
|
67
|
-
__decorate([
|
|
68
|
-
HostListener('change')
|
|
69
|
-
], TuiSliderKeyStepsDirective.prototype, "updateControlValue", null);
|
|
70
|
-
TuiSliderKeyStepsDirective = __decorate([
|
|
71
|
-
Directive({
|
|
72
|
-
selector: 'input[tuiSlider][keySteps]',
|
|
73
|
-
host: {
|
|
74
|
-
'[attr.aria-valuenow]': 'controlValue',
|
|
75
|
-
'[attr.aria-valuemin]': 'min',
|
|
76
|
-
'[attr.aria-valuemax]': 'max',
|
|
77
|
-
},
|
|
78
|
-
}),
|
|
79
|
-
__param(0, Optional()),
|
|
80
|
-
__param(0, Self()),
|
|
81
|
-
__param(0, Inject(NgControl)),
|
|
82
|
-
__param(1, Inject(ChangeDetectorRef)),
|
|
83
|
-
__param(2, Inject(ElementRef)),
|
|
84
|
-
__param(3, Inject(TuiSliderComponent))
|
|
85
|
-
], TuiSliderKeyStepsDirective);
|
|
86
|
-
export { TuiSliderKeyStepsDirective };
|
|
87
|
-
/**
|
|
88
|
-
* @deprecated DONT USE IT! It is just temporary solution for internal purposes only. We will delete it in next major release.
|
|
89
|
-
* TODO delete it in v3.0
|
|
90
|
-
*
|
|
91
|
-
*/
|
|
92
|
-
let TuiSliderTickLabelPipe = class TuiSliderTickLabelPipe {
|
|
93
|
-
transform(tickIndex, totalSegments, keySteps) {
|
|
94
|
-
const percentage = (100 / totalSegments) * tickIndex;
|
|
95
|
-
return tuiPercentageToKeyStepValue(percentage, keySteps);
|
|
96
|
-
}
|
|
97
|
-
};
|
|
98
|
-
TuiSliderTickLabelPipe = __decorate([
|
|
99
|
-
Pipe({ name: 'tuiSliderTickLabel' })
|
|
100
|
-
], TuiSliderTickLabelPipe);
|
|
101
|
-
export { TuiSliderTickLabelPipe };
|
|
102
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvc2xpZGVyLyIsInNvdXJjZXMiOlsic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixhQUFhLEVBQ2IsSUFBSSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFFZCxjQUFjLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsMkJBQTJCLEVBQzNCLDJCQUEyQixHQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxXQUFXO0FBU1gsSUFBYSwwQkFBMEIsR0FBdkMsTUFBYSwwQkFDVCxTQUFRLGtCQUEwQjtJQW1DbEMsWUFJSSxPQUF5QixFQUNFLGlCQUFvQyxFQUMxQixVQUF3QyxFQUNoQyxNQUEwQjtRQUV2RSxLQUFLLENBQUMsT0FBTyxFQUFFLGlCQUFpQixDQUFDLENBQUM7UUFIRyxlQUFVLEdBQVYsVUFBVSxDQUE4QjtRQUNoQyxXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQWxDM0UsYUFBUSxHQUFnQixFQUFFLENBQUM7UUFHM0Isa0JBQWEsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFh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Q0FBQTtJQUNOLFdBQUEsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRWpCLFdBQUEsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUE7SUFDekIsV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtHQTNDdEIsMEJBQTBCLENBaUZ0QztTQWpGWSwwQkFBMEI7QUFtRnZDOzs7O0dBSUc7QUFFSCxJQUFhLHNCQUFzQixHQUFuQyxNQUFhLHNCQUFzQjtJQUMvQixTQUFTLENBQUMsU0FBaUIsRUFBRSxhQUFxQixFQUFFLFFBQXFCO1FBQ3JFLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxHQUFHLGFBQWEsQ0FBQyxHQUFHLFNBQVMsQ0FBQztRQUVyRCxPQUFPLDJCQUEyQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0osQ0FBQTtBQU5ZLHNCQUFzQjtJQURsQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUMsQ0FBQztHQUN0QixzQkFBc0IsQ0FNbEM7U0FOWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFBpcGUsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBjbGFtcCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgdHVpQXNzZXJ0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0eXBlZEZyb21FdmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aUtleVN0ZXBzfSBmcm9tICdAdGFpZ2EtdWkva2l0L3R5cGVzJztcbmltcG9ydCB7XG4gICAgdHVpQ2hlY2tLZXlTdGVwc0hhdmVNaW5NYXhQZXJjZW50cyxcbiAgICB0dWlLZXlTdGVwVmFsdWVUb1BlcmNlbnRhZ2UsXG4gICAgdHVpUGVyY2VudGFnZVRvS2V5U3RlcFZhbHVlLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpU2xpZGVyQ29tcG9uZW50fSBmcm9tICcuL3NsaWRlci5jb21wb25lbnQnO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlTbGlkZXJdW2tleVN0ZXBzXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAnY29udHJvbFZhbHVlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJ21pbicsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVNsaWRlcktleVN0ZXBzRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHR1aUNoZWNrS2V5U3RlcHNIYXZlTWluTWF4UGVyY2VudHMsXG4gICAgICAgICdTaG91bGQgY29udGFpbiBtaW4gYW5kIG1heCB2YWx1ZXMnLFxuICAgIClcbiAgICBrZXlTdGVwczogVHVpS2V5U3RlcHMgPSBbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGtleVN0ZXBzSW5wdXQgPSB0eXBlZEZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29udHJvbFZhbHVlKSxcbiAgICApO1xuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlZERpc2FibGVkID8gbnVsbCA6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlTdGVwc1swXT8uWzFdIHx8IDA7XG4gICAgfVxuXG4gICAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlTdGVwc1t0aGlzLmtleVN0ZXBzLmxlbmd0aCAtIDFdPy5bMV0gfHwgMTAwO1xuICAgIH1cblxuICAgIGdldCBjb250cm9sVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR1aVBlcmNlbnRhZ2VUb0tleVN0ZXBWYWx1ZSh0aGlzLnNsaWRlci52YWx1ZVBlcmNlbnRhZ2UsIHRoaXMua2V5U3RlcHMpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFR1aVNsaWRlckNvbXBvbmVudCkgcHJpdmF0ZSByZWFkb25seSBzbGlkZXI6IFR1aVNsaWRlckNvbXBvbmVudCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gICAgdXBkYXRlQ29udHJvbFZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuY29udHJvbFZhbHVlKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKGNvbnRyb2xWYWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udHJvbFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGFtcGVkQ29udHJvbFZhbHVlID0gY2xhbXAoY29udHJvbFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoXG4gICAgICAgICAgICBjb250cm9sVmFsdWUgPT09IGNsYW1wZWRDb250cm9sVmFsdWUsXG4gICAgICAgICAgICAnXFxuW1NsaWRlcktleVN0ZXBzXTogWW91IGNhbm5vdCBwcm9ncmFtbWF0aWNhbGx5IHNldCB2YWx1ZSB3aGljaCBpcyBsZXNzL21vcmUgdGhhbiBtaW4vbWF4JyxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNsaWRlci52YWx1ZSA9IHRoaXMudHJhbnNmb3JtVG9OYXRpdmVWYWx1ZShjbGFtcGVkQ29udHJvbFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybVRvTmF0aXZlVmFsdWUoY29udHJvbFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7bWluLCBtYXh9ID0gdGhpcy5zbGlkZXI7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlUGVyY2VudGFnZSA9IHR1aUtleVN0ZXBWYWx1ZVRvUGVyY2VudGFnZShcbiAgICAgICAgICAgIGNvbnRyb2xWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMua2V5U3RlcHMsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChuZXdWYWx1ZVBlcmNlbnRhZ2UgKiAobWF4IC0gbWluKSkgLyAxMDAgKyBtaW47XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUISBJdCBpcyBqdXN0IHRlbXBvcmFyeSBzb2x1dGlvbiBmb3IgaW50ZXJuYWwgcHVycG9zZXMgb25seS4gV2Ugd2lsbCBkZWxldGUgaXQgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICogVE9ETyBkZWxldGUgaXQgaW4gdjMuMFxuICpcbiAqL1xuQFBpcGUoe25hbWU6ICd0dWlTbGlkZXJUaWNrTGFiZWwnfSlcbmV4cG9ydCBjbGFzcyBUdWlTbGlkZXJUaWNrTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHRpY2tJbmRleDogbnVtYmVyLCB0b3RhbFNlZ21lbnRzOiBudW1iZXIsIGtleVN0ZXBzOiBUdWlLZXlTdGVwcyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAoMTAwIC8gdG90YWxTZWdtZW50cykgKiB0aWNrSW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIHR1aVBlcmNlbnRhZ2VUb0tleVN0ZXBWYWx1ZShwZXJjZW50YWdlLCBrZXlTdGVwcyk7XG4gICAgfVxufVxuIl19
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { __decorate, __param } from "tslib";
|
|
2
|
-
import { DOCUMENT } from '@angular/common';
|
|
3
|
-
import { Directive, ElementRef, HostListener, Inject, Input } from '@angular/core';
|
|
4
|
-
import { tuiCoerceBooleanProperty, tuiDefaultProp, TuiDestroyService, typedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { combineLatest, merge, Observable } from 'rxjs';
|
|
6
|
-
import { filter, mapTo, takeUntil, tap } from 'rxjs/operators';
|
|
7
|
-
const SLIDER_INTERACTION_KEYS = new Set([
|
|
8
|
-
'ArrowLeft',
|
|
9
|
-
'ArrowRight',
|
|
10
|
-
'ArrowUp',
|
|
11
|
-
'ArrowDown',
|
|
12
|
-
'Home',
|
|
13
|
-
'End',
|
|
14
|
-
'PageUp',
|
|
15
|
-
'PageDown',
|
|
16
|
-
]);
|
|
17
|
-
/**
|
|
18
|
-
* Native <input type='range' readonly> doesn't work.
|
|
19
|
-
* This directive imitates this native behaviour.
|
|
20
|
-
*/
|
|
21
|
-
// @dynamic
|
|
22
|
-
let TuiSliderReadonlyDirective = class TuiSliderReadonlyDirective {
|
|
23
|
-
constructor(elementRef, documentRef, destroy$) {
|
|
24
|
-
this.readonly = true;
|
|
25
|
-
const touchStart$ = typedFromEvent(elementRef.nativeElement, 'touchstart', {
|
|
26
|
-
passive: false,
|
|
27
|
-
});
|
|
28
|
-
const touchMove$ = typedFromEvent(documentRef, 'touchmove', {
|
|
29
|
-
passive: false,
|
|
30
|
-
});
|
|
31
|
-
const touchEnd$ = typedFromEvent(documentRef, 'touchend', {
|
|
32
|
-
passive: true,
|
|
33
|
-
});
|
|
34
|
-
const shouldPreventMove$ = merge(touchStart$.pipe(tap(e => this.preventEvent(e)), mapTo(true)), touchEnd$.pipe(mapTo(false)));
|
|
35
|
-
/**
|
|
36
|
-
* @bad TODO think about another solution.
|
|
37
|
-
* Keep in mind that preventing touch event (on slider) inside `@HostListener('touchstart')` doesn't work for mobile chrome.
|
|
38
|
-
*/
|
|
39
|
-
combineLatest([touchMove$, shouldPreventMove$])
|
|
40
|
-
.pipe(filter(([_, shouldPreventMove]) => shouldPreventMove), takeUntil(destroy$))
|
|
41
|
-
.subscribe(([moveEvent]) => this.preventEvent(moveEvent));
|
|
42
|
-
}
|
|
43
|
-
preventEvent(event) {
|
|
44
|
-
if (event.cancelable && tuiCoerceBooleanProperty(this.readonly)) {
|
|
45
|
-
event.preventDefault();
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
preventKeyboardInteraction(event) {
|
|
49
|
-
if (SLIDER_INTERACTION_KEYS.has(event.key)) {
|
|
50
|
-
this.preventEvent(event);
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
};
|
|
54
|
-
TuiSliderReadonlyDirective.ctorParameters = () => [
|
|
55
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
56
|
-
{ type: Document, decorators: [{ type: Inject, args: [DOCUMENT,] }] },
|
|
57
|
-
{ type: Observable, decorators: [{ type: Inject, args: [TuiDestroyService,] }] }
|
|
58
|
-
];
|
|
59
|
-
__decorate([
|
|
60
|
-
Input(),
|
|
61
|
-
tuiDefaultProp()
|
|
62
|
-
], TuiSliderReadonlyDirective.prototype, "readonly", void 0);
|
|
63
|
-
__decorate([
|
|
64
|
-
HostListener('mousedown', ['$event'])
|
|
65
|
-
], TuiSliderReadonlyDirective.prototype, "preventEvent", null);
|
|
66
|
-
__decorate([
|
|
67
|
-
HostListener('keydown', ['$event'])
|
|
68
|
-
], TuiSliderReadonlyDirective.prototype, "preventKeyboardInteraction", null);
|
|
69
|
-
TuiSliderReadonlyDirective = __decorate([
|
|
70
|
-
Directive({
|
|
71
|
-
selector: 'input[tuiSlider][readonly]',
|
|
72
|
-
providers: [TuiDestroyService],
|
|
73
|
-
}),
|
|
74
|
-
__param(0, Inject(ElementRef)),
|
|
75
|
-
__param(1, Inject(DOCUMENT)),
|
|
76
|
-
__param(2, Inject(TuiDestroyService))
|
|
77
|
-
], TuiSliderReadonlyDirective);
|
|
78
|
-
export { TuiSliderReadonlyDirective };
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXJlYWRvbmx5LmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B0YWlnYS11aS9raXQvY29tcG9uZW50cy9zbGlkZXIvIiwic291cmNlcyI6WyJzbGlkZXItcmVhZG9ubHkuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUNILHdCQUF3QixFQUN4QixjQUFjLEVBQ2QsaUJBQWlCLEVBQ2pCLGNBQWMsR0FDakIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGFBQWEsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFDLE1BQU0sTUFBTSxDQUFDO0FBQ3RELE9BQU8sRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3RCxNQUFNLHVCQUF1QixHQUFHLElBQUksR0FBRyxDQUFDO0lBQ3BDLFdBQVc7SUFDWCxZQUFZO0lBQ1osU0FBUztJQUNULFdBQVc7SUFDWCxNQUFNO0lBQ04sS0FBSztJQUNMLFFBQVE7SUFDUixVQUFVO0NBQ2IsQ0FBQyxDQUFDO0FBRUg7OztHQUdHO0FBQ0gsV0FBVztBQUtYLElBQWEsMEJBQTBCLEdBQXZDLE1BQWEsMEJBQTBCO0lBS25DLFlBQ3dCLFVBQXdDLEVBQzFDLFdBQXFCLEVBRXZDLFFBQTZCO1FBTmpDLGFBQVEsR0FBcUIsSUFBSSxDQUFDO1FBUTlCLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRTtZQUN2RSxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRTtZQUN4RCxPQUFPLEVBQUUsS0FBSztTQUNqQixDQUFDLENBQUM7UUFDSCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsV0FBVyxFQUFFLFVBQVUsRUFBRTtZQUN0RCxPQUFPLEVBQUUsSUFBSTtTQUNoQixDQUFDLENBQUM7UUFFSCxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FDNUIsV0FBVyxDQUFDLElBQUksQ0FDWixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzlCLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FDZCxFQUNELFNBQVMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQy9CLENBQUM7UUFFRjs7O1dBR0c7UUFDSCxhQUFhLENBQUMsQ0FBQyxVQUFVLEVBQUUsa0JBQWtCLENBQUMsQ0FBQzthQUMxQyxJQUFJLENBQ0QsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLENBQUMsRUFBRSxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFDckQsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUN0QjthQUNBLFNBQVMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNsRSxDQUFDO0lBR0QsWUFBWSxDQUFDLEtBQVk7UUFDckIsSUFBSSxLQUFLLENBQUMsVUFBVSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUM3RCxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBR0QsMEJBQTBCLENBQUMsS0FBb0I7UUFDM0MsSUFBSSx1QkFBdUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDNUI7SUFDTCxDQUFDO0NBQ0osQ0FBQTs7WUFoRHVDLFVBQVUsdUJBQXpDLE1BQU0sU0FBQyxVQUFVO1lBQ2EsUUFBUSx1QkFBdEMsTUFBTSxTQUFDLFFBQVE7WUFFTixVQUFVLHVCQURuQixNQUFNLFNBQUMsaUJBQWlCOztBQUw3QjtJQUZDLEtBQUssRUFBRTtJQUNQLGNBQWMsRUFBRTs0REFDaUI7QUF1Q2xDO0lBREMsWUFBWSxDQUFDLFdBQVcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzhEQUtyQztBQUdEO0lBREMsWUFBWSxDQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDOzRFQUtuQztBQXJEUSwwQkFBMEI7SUFKdEMsU0FBUyxDQUFDO1FBQ1AsUUFBUSxFQUFFLDRCQUE0QjtRQUN0QyxTQUFTLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQztLQUNqQyxDQUFDO0lBT08sV0FBQSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUE7SUFDbEIsV0FBQSxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDaEIsV0FBQSxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtHQVJyQiwwQkFBMEIsQ0FzRHRDO1NBdERZLDBCQUEwQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgdHVpQ29lcmNlQm9vbGVhblByb3BlcnR5LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aURlc3Ryb3lTZXJ2aWNlLFxuICAgIHR5cGVkRnJvbUV2ZW50LFxufSBmcm9tICdAdGFpZ2EtdWkvY2RrJztcbmltcG9ydCB7Y29tYmluZUxhdGVzdCwgbWVyZ2UsIE9ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtmaWx0ZXIsIG1hcFRvLCB0YWtlVW50aWwsIHRhcH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5jb25zdCBTTElERVJfSU5URVJBQ1RJT05fS0VZUyA9IG5ldyBTZXQoW1xuICAgICdBcnJvd0xlZnQnLFxuICAgICdBcnJvd1JpZ2h0JyxcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bicsXG4gICAgJ0hvbWUnLFxuICAgICdFbmQnLFxuICAgICdQYWdlVXAnLFxuICAgICdQYWdlRG93bicsXG5dKTtcblxuLyoqXG4gKiBOYXRpdmUgPGlucHV0IHR5cGU9J3JhbmdlJyByZWFkb25seT4gZG9lc24ndCB3b3JrLlxuICogVGhpcyBkaXJlY3RpdmUgaW1pdGF0ZXMgdGhpcyBuYXRpdmUgYmVoYXZpb3VyLlxuICovXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlTbGlkZXJdW3JlYWRvbmx5XScsXG4gICAgcHJvdmlkZXJzOiBbVHVpRGVzdHJveVNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBUdWlTbGlkZXJSZWFkb25seURpcmVjdGl2ZSB7XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoKVxuICAgIHJlYWRvbmx5OiBzdHJpbmcgfCBib29sZWFuID0gdHJ1ZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KEVsZW1lbnRSZWYpIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIGRvY3VtZW50UmVmOiBEb2N1bWVudCxcbiAgICAgICAgQEluamVjdChUdWlEZXN0cm95U2VydmljZSlcbiAgICAgICAgZGVzdHJveSQ6IE9ic2VydmFibGU8dW5rbm93bj4sXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IHRvdWNoU3RhcnQkID0gdHlwZWRGcm9tRXZlbnQoZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAndG91Y2hzdGFydCcsIHtcbiAgICAgICAgICAgIHBhc3NpdmU6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgdG91Y2hNb3ZlJCA9IHR5cGVkRnJvbUV2ZW50KGRvY3VtZW50UmVmLCAndG91Y2htb3ZlJywge1xuICAgICAgICAgICAgcGFzc2l2ZTogZmFsc2UsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCB0b3VjaEVuZCQgPSB0eXBlZEZyb21FdmVudChkb2N1bWVudFJlZiwgJ3RvdWNoZW5kJywge1xuICAgICAgICAgICAgcGFzc2l2ZTogdHJ1ZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3Qgc2hvdWxkUHJldmVudE1vdmUkID0gbWVyZ2UoXG4gICAgICAgICAgICB0b3VjaFN0YXJ0JC5waXBlKFxuICAgICAgICAgICAgICAgIHRhcChlID0+IHRoaXMucHJldmVudEV2ZW50KGUpKSxcbiAgICAgICAgICAgICAgICBtYXBUbyh0cnVlKSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB0b3VjaEVuZCQucGlwZShtYXBUbyhmYWxzZSkpLFxuICAgICAgICApO1xuXG4gICAgICAgIC8qKlxuICAgICAgICAgKiBAYmFkIFRPRE8gdGhpbmsgYWJvdXQgYW5vdGhlciBzb2x1dGlvbi5cbiAgICAgICAgICogS2VlcCBpbiBtaW5kIHRoYXQgcHJldmVudGluZyB0b3VjaCBldmVudCAob24gc2xpZGVyKSBpbnNpZGUgYEBIb3N0TGlzdGVuZXIoJ3RvdWNoc3RhcnQnKWAgZG9lc24ndCB3b3JrIGZvciBtb2JpbGUgY2hyb21lLlxuICAgICAgICAgKi9cbiAgICAgICAgY29tYmluZUxhdGVzdChbdG91Y2hNb3ZlJCwgc2hvdWxkUHJldmVudE1vdmUkXSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIGZpbHRlcigoW18sIHNob3VsZFByZXZlbnRNb3ZlXSkgPT4gc2hvdWxkUHJldmVudE1vdmUpLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbChkZXN0cm95JCksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKChbbW92ZUV2ZW50XSkgPT4gdGhpcy5wcmV2ZW50RXZlbnQobW92ZUV2ZW50KSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcignbW91c2Vkb3duJywgWyckZXZlbnQnXSlcbiAgICBwcmV2ZW50RXZlbnQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlICYmIHR1aUNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh0aGlzLnJlYWRvbmx5KSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHByZXZlbnRLZXlib2FyZEludGVyYWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmIChTTElERVJfSU5URVJBQ1RJT05fS0VZUy5oYXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgdGhpcy5wcmV2ZW50RXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import { __decorate, __extends, __param } from "tslib";
|
|
2
|
-
import { ChangeDetectorRef, Directive, ElementRef, HostListener, Inject, Input, Optional, Output, Pipe, PipeTransform, Self, } from '@angular/core';
|
|
3
|
-
import { NgControl } from '@angular/forms';
|
|
4
|
-
import { AbstractTuiControl, clamp, isNativeFocused, tuiAssert, tuiDefaultProp, typedFromEvent, } from '@taiga-ui/cdk';
|
|
5
|
-
import { tuiCheckKeyStepsHaveMinMaxPercents, tuiKeyStepValueToPercentage, tuiPercentageToKeyStepValue, } from '@taiga-ui/kit/utils';
|
|
6
|
-
import { map } from 'rxjs/operators';
|
|
7
|
-
import { TuiSliderComponent } from './slider.component';
|
|
8
|
-
// @dynamic
|
|
9
|
-
var TuiSliderKeyStepsDirective = /** @class */ (function (_super) {
|
|
10
|
-
__extends(TuiSliderKeyStepsDirective, _super);
|
|
11
|
-
function TuiSliderKeyStepsDirective(control, changeDetectorRef, elementRef, slider) {
|
|
12
|
-
var _this = _super.call(this, control, changeDetectorRef) || this;
|
|
13
|
-
_this.elementRef = elementRef;
|
|
14
|
-
_this.slider = slider;
|
|
15
|
-
_this.keySteps = [];
|
|
16
|
-
_this.keyStepsInput = typedFromEvent(_this.elementRef.nativeElement, 'input').pipe(map(function () { return _this.controlValue; }));
|
|
17
|
-
return _this;
|
|
18
|
-
}
|
|
19
|
-
Object.defineProperty(TuiSliderKeyStepsDirective.prototype, "nativeFocusableElement", {
|
|
20
|
-
get: function () {
|
|
21
|
-
return this.computedDisabled ? null : this.elementRef.nativeElement;
|
|
22
|
-
},
|
|
23
|
-
enumerable: true,
|
|
24
|
-
configurable: true
|
|
25
|
-
});
|
|
26
|
-
Object.defineProperty(TuiSliderKeyStepsDirective.prototype, "focused", {
|
|
27
|
-
get: function () {
|
|
28
|
-
return isNativeFocused(this.nativeFocusableElement);
|
|
29
|
-
},
|
|
30
|
-
enumerable: true,
|
|
31
|
-
configurable: true
|
|
32
|
-
});
|
|
33
|
-
Object.defineProperty(TuiSliderKeyStepsDirective.prototype, "min", {
|
|
34
|
-
get: function () {
|
|
35
|
-
var _a;
|
|
36
|
-
return ((_a = this.keySteps[0]) === null || _a === void 0 ? void 0 : _a[1]) || 0;
|
|
37
|
-
},
|
|
38
|
-
enumerable: true,
|
|
39
|
-
configurable: true
|
|
40
|
-
});
|
|
41
|
-
Object.defineProperty(TuiSliderKeyStepsDirective.prototype, "max", {
|
|
42
|
-
get: function () {
|
|
43
|
-
var _a;
|
|
44
|
-
return ((_a = this.keySteps[this.keySteps.length - 1]) === null || _a === void 0 ? void 0 : _a[1]) || 100;
|
|
45
|
-
},
|
|
46
|
-
enumerable: true,
|
|
47
|
-
configurable: true
|
|
48
|
-
});
|
|
49
|
-
Object.defineProperty(TuiSliderKeyStepsDirective.prototype, "controlValue", {
|
|
50
|
-
get: function () {
|
|
51
|
-
return tuiPercentageToKeyStepValue(this.slider.valuePercentage, this.keySteps);
|
|
52
|
-
},
|
|
53
|
-
enumerable: true,
|
|
54
|
-
configurable: true
|
|
55
|
-
});
|
|
56
|
-
TuiSliderKeyStepsDirective.prototype.updateControlValue = function () {
|
|
57
|
-
this.updateValue(this.controlValue);
|
|
58
|
-
};
|
|
59
|
-
TuiSliderKeyStepsDirective.prototype.writeValue = function (controlValue) {
|
|
60
|
-
if (controlValue === null) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
var clampedControlValue = clamp(controlValue, this.min, this.max);
|
|
64
|
-
tuiAssert.assert(controlValue === clampedControlValue, '\n[SliderKeySteps]: You cannot programmatically set value which is less/more than min/max');
|
|
65
|
-
this.slider.value = this.transformToNativeValue(clampedControlValue);
|
|
66
|
-
};
|
|
67
|
-
TuiSliderKeyStepsDirective.prototype.getFallbackValue = function () {
|
|
68
|
-
return 0;
|
|
69
|
-
};
|
|
70
|
-
TuiSliderKeyStepsDirective.prototype.transformToNativeValue = function (controlValue) {
|
|
71
|
-
var _a = this.slider, min = _a.min, max = _a.max;
|
|
72
|
-
var newValuePercentage = tuiKeyStepValueToPercentage(controlValue, this.keySteps);
|
|
73
|
-
return (newValuePercentage * (max - min)) / 100 + min;
|
|
74
|
-
};
|
|
75
|
-
TuiSliderKeyStepsDirective.ctorParameters = function () { return [
|
|
76
|
-
{ type: NgControl, decorators: [{ type: Optional }, { type: Self }, { type: Inject, args: [NgControl,] }] },
|
|
77
|
-
{ type: ChangeDetectorRef, decorators: [{ type: Inject, args: [ChangeDetectorRef,] }] },
|
|
78
|
-
{ type: ElementRef, decorators: [{ type: Inject, args: [ElementRef,] }] },
|
|
79
|
-
{ type: TuiSliderComponent, decorators: [{ type: Inject, args: [TuiSliderComponent,] }] }
|
|
80
|
-
]; };
|
|
81
|
-
__decorate([
|
|
82
|
-
Input(),
|
|
83
|
-
tuiDefaultProp(tuiCheckKeyStepsHaveMinMaxPercents, 'Should contain min and max values')
|
|
84
|
-
], TuiSliderKeyStepsDirective.prototype, "keySteps", void 0);
|
|
85
|
-
__decorate([
|
|
86
|
-
Output()
|
|
87
|
-
], TuiSliderKeyStepsDirective.prototype, "keyStepsInput", void 0);
|
|
88
|
-
__decorate([
|
|
89
|
-
HostListener('change')
|
|
90
|
-
], TuiSliderKeyStepsDirective.prototype, "updateControlValue", null);
|
|
91
|
-
TuiSliderKeyStepsDirective = __decorate([
|
|
92
|
-
Directive({
|
|
93
|
-
selector: 'input[tuiSlider][keySteps]',
|
|
94
|
-
host: {
|
|
95
|
-
'[attr.aria-valuenow]': 'controlValue',
|
|
96
|
-
'[attr.aria-valuemin]': 'min',
|
|
97
|
-
'[attr.aria-valuemax]': 'max',
|
|
98
|
-
},
|
|
99
|
-
}),
|
|
100
|
-
__param(0, Optional()),
|
|
101
|
-
__param(0, Self()),
|
|
102
|
-
__param(0, Inject(NgControl)),
|
|
103
|
-
__param(1, Inject(ChangeDetectorRef)),
|
|
104
|
-
__param(2, Inject(ElementRef)),
|
|
105
|
-
__param(3, Inject(TuiSliderComponent))
|
|
106
|
-
], TuiSliderKeyStepsDirective);
|
|
107
|
-
return TuiSliderKeyStepsDirective;
|
|
108
|
-
}(AbstractTuiControl));
|
|
109
|
-
export { TuiSliderKeyStepsDirective };
|
|
110
|
-
/**
|
|
111
|
-
* @deprecated DONT USE IT! It is just temporary solution for internal purposes only. We will delete it in next major release.
|
|
112
|
-
* TODO delete it in v3.0
|
|
113
|
-
*
|
|
114
|
-
*/
|
|
115
|
-
var TuiSliderTickLabelPipe = /** @class */ (function () {
|
|
116
|
-
function TuiSliderTickLabelPipe() {
|
|
117
|
-
}
|
|
118
|
-
TuiSliderTickLabelPipe.prototype.transform = function (tickIndex, totalSegments, keySteps) {
|
|
119
|
-
var percentage = (100 / totalSegments) * tickIndex;
|
|
120
|
-
return tuiPercentageToKeyStepValue(percentage, keySteps);
|
|
121
|
-
};
|
|
122
|
-
TuiSliderTickLabelPipe = __decorate([
|
|
123
|
-
Pipe({ name: 'tuiSliderTickLabel' })
|
|
124
|
-
], TuiSliderTickLabelPipe);
|
|
125
|
-
return TuiSliderTickLabelPipe;
|
|
126
|
-
}());
|
|
127
|
-
export { TuiSliderTickLabelPipe };
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AdGFpZ2EtdWkva2l0L2NvbXBvbmVudHMvc2xpZGVyLyIsInNvdXJjZXMiOlsic2xpZGVyLWtleS1zdGVwcy5kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDSCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxRQUFRLEVBQ1IsTUFBTSxFQUNOLElBQUksRUFDSixhQUFhLEVBQ2IsSUFBSSxHQUNQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQ0gsa0JBQWtCLEVBQ2xCLEtBQUssRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULGNBQWMsRUFFZCxjQUFjLEdBQ2pCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDSCxrQ0FBa0MsRUFDbEMsMkJBQTJCLEVBQzNCLDJCQUEyQixHQUM5QixNQUFNLHFCQUFxQixDQUFDO0FBQzdCLE9BQU8sRUFBQyxHQUFHLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUVuQyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxvQkFBb0IsQ0FBQztBQUV0RCxXQUFXO0FBU1g7SUFDWSw4Q0FBMEI7SUFtQ2xDLG9DQUlJLE9BQXlCLEVBQ0UsaUJBQW9DLEVBQzFCLFVBQXdDLEVBQ2hDLE1BQTBCO1FBUDNFLFlBU0ksa0JBQU0sT0FBTyxFQUFFLGlCQUFpQixDQUFDLFNBQ3BDO1FBSndDLGdCQUFVLEdBQVYsVUFBVSxDQUE4QjtRQUNoQyxZQUFNLEdBQU4sTUFBTSxDQUFvQjtRQWxDM0UsY0FBUSxHQUFnQixFQUFFLENBQUM7UUFHM0IsbUJBQWEsR0FBRyxjQUFjLENBQUMsS0FBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFB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QztTQUNKLENBQUM7UUFzQ08sV0FBQSxRQUFRLEVBQUUsQ0FBQTtRQUNWLFdBQUEsSUFBSSxFQUFFLENBQUE7UUFDTixXQUFBLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVqQixXQUFBLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO1FBQ3pCLFdBQUEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFBO1FBQ2xCLFdBQUEsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUE7T0EzQ3RCLDBCQUEwQixDQWlGdEM7SUFBRCxpQ0FBQztDQUFBLEFBakZELENBQ1ksa0JBQWtCLEdBZ0Y3QjtTQWpGWSwwQkFBMEI7QUFtRnZDOzs7O0dBSUc7QUFFSDtJQUFBO0lBTUEsQ0FBQztJQUxHLDBDQUFTLEdBQVQsVUFBVSxTQUFpQixFQUFFLGFBQXFCLEVBQUUsUUFBcUI7UUFDckUsSUFBTSxVQUFVLEdBQUcsQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDLEdBQUcsU0FBUyxDQUFDO1FBRXJELE9BQU8sMkJBQTJCLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFMUSxzQkFBc0I7UUFEbEMsSUFBSSxDQUFDLEVBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFDLENBQUM7T0FDdEIsc0JBQXNCLENBTWxDO0lBQUQsNkJBQUM7Q0FBQSxBQU5ELElBTUM7U0FOWSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFBpcGUsXG4gICAgUGlwZVRyYW5zZm9ybSxcbiAgICBTZWxmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICAgIEFic3RyYWN0VHVpQ29udHJvbCxcbiAgICBjbGFtcCxcbiAgICBpc05hdGl2ZUZvY3VzZWQsXG4gICAgdHVpQXNzZXJ0LFxuICAgIHR1aURlZmF1bHRQcm9wLFxuICAgIFR1aUZvY3VzYWJsZUVsZW1lbnRBY2Nlc3NvcixcbiAgICB0eXBlZEZyb21FdmVudCxcbn0gZnJvbSAnQHRhaWdhLXVpL2Nkayc7XG5pbXBvcnQge1R1aUtleVN0ZXBzfSBmcm9tICdAdGFpZ2EtdWkva2l0L3R5cGVzJztcbmltcG9ydCB7XG4gICAgdHVpQ2hlY2tLZXlTdGVwc0hhdmVNaW5NYXhQZXJjZW50cyxcbiAgICB0dWlLZXlTdGVwVmFsdWVUb1BlcmNlbnRhZ2UsXG4gICAgdHVpUGVyY2VudGFnZVRvS2V5U3RlcFZhbHVlLFxufSBmcm9tICdAdGFpZ2EtdWkva2l0L3V0aWxzJztcbmltcG9ydCB7bWFwfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7VHVpU2xpZGVyQ29tcG9uZW50fSBmcm9tICcuL3NsaWRlci5jb21wb25lbnQnO1xuXG4vLyBAZHluYW1pY1xuQERpcmVjdGl2ZSh7XG4gICAgc2VsZWN0b3I6ICdpbnB1dFt0dWlTbGlkZXJdW2tleVN0ZXBzXScsXG4gICAgaG9zdDoge1xuICAgICAgICAnW2F0dHIuYXJpYS12YWx1ZW5vd10nOiAnY29udHJvbFZhbHVlJyxcbiAgICAgICAgJ1thdHRyLmFyaWEtdmFsdWVtaW5dJzogJ21pbicsXG4gICAgICAgICdbYXR0ci5hcmlhLXZhbHVlbWF4XSc6ICdtYXgnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aVNsaWRlcktleVN0ZXBzRGlyZWN0aXZlXG4gICAgZXh0ZW5kcyBBYnN0cmFjdFR1aUNvbnRyb2w8bnVtYmVyPlxuICAgIGltcGxlbWVudHMgVHVpRm9jdXNhYmxlRWxlbWVudEFjY2Vzc29yXG57XG4gICAgQElucHV0KClcbiAgICBAdHVpRGVmYXVsdFByb3AoXG4gICAgICAgIHR1aUNoZWNrS2V5U3RlcHNIYXZlTWluTWF4UGVyY2VudHMsXG4gICAgICAgICdTaG91bGQgY29udGFpbiBtaW4gYW5kIG1heCB2YWx1ZXMnLFxuICAgIClcbiAgICBrZXlTdGVwczogVHVpS2V5U3RlcHMgPSBbXTtcblxuICAgIEBPdXRwdXQoKVxuICAgIGtleVN0ZXBzSW5wdXQgPSB0eXBlZEZyb21FdmVudCh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2lucHV0JykucGlwZShcbiAgICAgICAgbWFwKCgpID0+IHRoaXMuY29udHJvbFZhbHVlKSxcbiAgICApO1xuXG4gICAgZ2V0IG5hdGl2ZUZvY3VzYWJsZUVsZW1lbnQoKTogSFRNTElucHV0RWxlbWVudCB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlZERpc2FibGVkID8gbnVsbCA6IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIGdldCBmb2N1c2VkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gaXNOYXRpdmVGb2N1c2VkKHRoaXMubmF0aXZlRm9jdXNhYmxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgZ2V0IG1pbigpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlTdGVwc1swXT8uWzFdIHx8IDA7XG4gICAgfVxuXG4gICAgZ2V0IG1heCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5rZXlTdGVwc1t0aGlzLmtleVN0ZXBzLmxlbmd0aCAtIDFdPy5bMV0gfHwgMTAwO1xuICAgIH1cblxuICAgIGdldCBjb250cm9sVmFsdWUoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHR1aVBlcmNlbnRhZ2VUb0tleVN0ZXBWYWx1ZSh0aGlzLnNsaWRlci52YWx1ZVBlcmNlbnRhZ2UsIHRoaXMua2V5U3RlcHMpO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBAU2VsZigpXG4gICAgICAgIEBJbmplY3QoTmdDb250cm9sKVxuICAgICAgICBjb250cm9sOiBOZ0NvbnRyb2wgfCBudWxsLFxuICAgICAgICBASW5qZWN0KENoYW5nZURldGVjdG9yUmVmKSBjaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIEBJbmplY3QoRWxlbWVudFJlZikgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50UmVmOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+LFxuICAgICAgICBASW5qZWN0KFR1aVNsaWRlckNvbXBvbmVudCkgcHJpdmF0ZSByZWFkb25seSBzbGlkZXI6IFR1aVNsaWRlckNvbXBvbmVudCxcbiAgICApIHtcbiAgICAgICAgc3VwZXIoY29udHJvbCwgY2hhbmdlRGV0ZWN0b3JSZWYpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NoYW5nZScpXG4gICAgdXBkYXRlQ29udHJvbFZhbHVlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMuY29udHJvbFZhbHVlKTtcbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKGNvbnRyb2xWYWx1ZTogbnVtYmVyIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAoY29udHJvbFZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjbGFtcGVkQ29udHJvbFZhbHVlID0gY2xhbXAoY29udHJvbFZhbHVlLCB0aGlzLm1pbiwgdGhpcy5tYXgpO1xuXG4gICAgICAgIHR1aUFzc2VydC5hc3NlcnQoXG4gICAgICAgICAgICBjb250cm9sVmFsdWUgPT09IGNsYW1wZWRDb250cm9sVmFsdWUsXG4gICAgICAgICAgICAnXFxuW1NsaWRlcktleVN0ZXBzXTogWW91IGNhbm5vdCBwcm9ncmFtbWF0aWNhbGx5IHNldCB2YWx1ZSB3aGljaCBpcyBsZXNzL21vcmUgdGhhbiBtaW4vbWF4JyxcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNsaWRlci52YWx1ZSA9IHRoaXMudHJhbnNmb3JtVG9OYXRpdmVWYWx1ZShjbGFtcGVkQ29udHJvbFZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0RmFsbGJhY2tWYWx1ZSgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybVRvTmF0aXZlVmFsdWUoY29udHJvbFZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgICAgICBjb25zdCB7bWluLCBtYXh9ID0gdGhpcy5zbGlkZXI7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlUGVyY2VudGFnZSA9IHR1aUtleVN0ZXBWYWx1ZVRvUGVyY2VudGFnZShcbiAgICAgICAgICAgIGNvbnRyb2xWYWx1ZSxcbiAgICAgICAgICAgIHRoaXMua2V5U3RlcHMsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChuZXdWYWx1ZVBlcmNlbnRhZ2UgKiAobWF4IC0gbWluKSkgLyAxMDAgKyBtaW47XG4gICAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIERPTlQgVVNFIElUISBJdCBpcyBqdXN0IHRlbXBvcmFyeSBzb2x1dGlvbiBmb3IgaW50ZXJuYWwgcHVycG9zZXMgb25seS4gV2Ugd2lsbCBkZWxldGUgaXQgaW4gbmV4dCBtYWpvciByZWxlYXNlLlxuICogVE9ETyBkZWxldGUgaXQgaW4gdjMuMFxuICpcbiAqL1xuQFBpcGUoe25hbWU6ICd0dWlTbGlkZXJUaWNrTGFiZWwnfSlcbmV4cG9ydCBjbGFzcyBUdWlTbGlkZXJUaWNrTGFiZWxQaXBlIGltcGxlbWVudHMgUGlwZVRyYW5zZm9ybSB7XG4gICAgdHJhbnNmb3JtKHRpY2tJbmRleDogbnVtYmVyLCB0b3RhbFNlZ21lbnRzOiBudW1iZXIsIGtleVN0ZXBzOiBUdWlLZXlTdGVwcyk6IG51bWJlciB7XG4gICAgICAgIGNvbnN0IHBlcmNlbnRhZ2UgPSAoMTAwIC8gdG90YWxTZWdtZW50cykgKiB0aWNrSW5kZXg7XG5cbiAgICAgICAgcmV0dXJuIHR1aVBlcmNlbnRhZ2VUb0tleVN0ZXBWYWx1ZShwZXJjZW50YWdlLCBrZXlTdGVwcyk7XG4gICAgfVxufVxuIl19
|