@taiga-ui/addon-mobile 5.3.0 → 5.4.0-canary.d26a6e2

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.
@@ -27,15 +27,15 @@ class TuiBottomSheet {
27
27
  this.el.animate([{ transform }], OPTIONS);
28
28
  }
29
29
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiBottomSheet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiBottomSheet, isStandalone: true, selector: "tui-bottom-sheet", inputs: { stops: { classPropertyName: "stops", publicName: "stops", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "scroll.zoneless": "onScroll()", "resize": "onScroll()" }, properties: { "style.--t-initial": "stops()[0]", "style.scroll-snap-type": "stops().length > 1 ? \"y mandatory\" : null" } }, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], viewQueries: [{ propertyName: "elements", predicate: ["stops"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;display:block;inset-block-start:100%;inset-inline-start:0;inset-inline-end:0;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;z-index:1;display:block;inset-block-start:.625rem;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;inset-block-start:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;inset-block-start:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
30
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiBottomSheet, isStandalone: true, selector: "tui-bottom-sheet", inputs: { stops: { classPropertyName: "stops", publicName: "stops", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "resize": "onScroll()", "scroll.zoneless": "onScroll()" }, properties: { "style.--t-initial": "stops()[0]", "style.scroll-snap-type": "stops().length > 1 ? \"y mandatory\" : null" } }, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], viewQueries: [{ propertyName: "elements", predicate: ["stops"], descendants: true, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;display:block;inset-block-start:100%;inset-inline-start:0;inset-inline-end:0;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;z-index:1;display:block;inset-block-start:.625rem;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;inset-block-start:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;inset-block-start:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
31
  }
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiBottomSheet, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'tui-bottom-sheet', changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiHeaderOptionsProvider({ size: 'h5' })], host: {
35
35
  '[style.--t-initial]': 'stops()[0]',
36
36
  '[style.scroll-snap-type]': 'stops().length > 1 ? "y mandatory" : null',
37
- '(scroll.zoneless)': 'onScroll()',
38
37
  '(resize)': 'onScroll()',
38
+ '(scroll.zoneless)': 'onScroll()',
39
39
  }, template: "@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:absolute;display:block;inset-block-start:100%;inset-inline-start:0;inset-inline-end:0;block-size:calc(100% - 1rem);max-inline-size:40rem;margin:calc(-1 * var(--t-initial)) auto 0;background:var(--tui-background-elevation-1);border-top-left-radius:var(--tui-radius-l);border-top-right-radius:var(--tui-radius-l);overflow:auto;box-shadow:0 1rem var(--tui-background-elevation-1),var(--tui-shadow-medium)}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:before{content:\"\";position:sticky;z-index:1;display:block;inset-block-start:.625rem;inset-inline-start:50%;inline-size:2rem;block-size:.25rem;margin-block-end:-.25rem;transform:translate(calc(-50% * var(--tui-inline)));background:var(--tui-background-elevation-1);box-shadow:0 0 0 20rem var(--tui-background-elevation-1),inset 0 0 0 1rem var(--tui-border-normal);border-radius:1rem;clip-path:polygon(-100vw -1rem,100vw -1rem,100vw calc(100% + .625rem),-100vw calc(100% + .625rem))}:host:after{content:\"\";position:absolute;inset-block-start:calc(100% - var(--t-initial));inline-size:1rem;block-size:calc(var(--t-height) - 100% + var(--t-initial));scroll-snap-align:start;scroll-snap-stop:always}.t-content{position:sticky;inset-block-start:0;padding:2.25rem 1rem 1.5rem}.t-bottom{block-size:calc(100% - var(--t-initial))}.t-stop{position:absolute;block-size:var(--t-initial);inline-size:1rem;pointer-events:none;transform:translateY(-100%);scroll-snap-align:start;scroll-snap-stop:always}.t-stop:last-child{scroll-snap-align:none}\n"] }]
40
40
  }] });
41
41
 
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-bottom-sheet.mjs","sources":["../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.template.html","../../../projects/addon-mobile/components/bottom-sheet/taiga-ui-addon-mobile-components-bottom-sheet.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n type ElementRef,\n input,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiHeaderOptionsProvider} from '@taiga-ui/layout/components/header';\n\nconst OPTIONS = {\n duration: 20,\n easing: 'ease-in',\n fill: 'forwards',\n} as const;\n\n@Component({\n selector: 'tui-bottom-sheet',\n templateUrl: './bottom-sheet.template.html',\n styleUrl: './bottom-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHeaderOptionsProvider({size: 'h5'})],\n host: {\n '[style.--t-initial]': 'stops()[0]',\n '[style.scroll-snap-type]': 'stops().length > 1 ? \"y mandatory\" : null',\n '(scroll.zoneless)': 'onScroll()',\n '(resize)': 'onScroll()',\n },\n})\nexport class TuiBottomSheet {\n private readonly elements = viewChildren<ElementRef<HTMLElement>>('stops');\n private readonly content = viewChild<ElementRef<HTMLElement>>('content');\n private readonly el = tuiInjectElement();\n\n public readonly stops = input<readonly string[]>(['1.5rem']);\n\n protected onScroll(): void {\n const {clientHeight, scrollTop, scrollHeight} = this.el;\n const top = this.elements()[0]?.nativeElement.clientHeight || 0;\n const max = this.content()?.nativeElement.clientHeight || Infinity;\n const height = Math.min(clientHeight, max);\n const scrolled = Math.min(scrollTop, height - top);\n const transform = `translate3d(0, ${-1 * scrolled}px, 0)`;\n\n this.el.style.setProperty('--t-height', `${scrollHeight}px`);\n this.el.style.setProperty('overflow', 'scroll');\n this.el.animate([{transform}], OPTIONS);\n }\n}\n","@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-bottom-sheet.mjs","sources":["../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.component.ts","../../../projects/addon-mobile/components/bottom-sheet/bottom-sheet.template.html","../../../projects/addon-mobile/components/bottom-sheet/taiga-ui-addon-mobile-components-bottom-sheet.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n Component,\n type ElementRef,\n input,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiHeaderOptionsProvider} from '@taiga-ui/layout/components/header';\n\nconst OPTIONS = {\n duration: 20,\n easing: 'ease-in',\n fill: 'forwards',\n} as const;\n\n@Component({\n selector: 'tui-bottom-sheet',\n templateUrl: './bottom-sheet.template.html',\n styleUrl: './bottom-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiHeaderOptionsProvider({size: 'h5'})],\n host: {\n '[style.--t-initial]': 'stops()[0]',\n '[style.scroll-snap-type]': 'stops().length > 1 ? \"y mandatory\" : null',\n '(resize)': 'onScroll()',\n '(scroll.zoneless)': 'onScroll()',\n },\n})\nexport class TuiBottomSheet {\n private readonly elements = viewChildren<ElementRef<HTMLElement>>('stops');\n private readonly content = viewChild<ElementRef<HTMLElement>>('content');\n private readonly el = tuiInjectElement();\n public readonly stops = input<readonly string[]>(['1.5rem']);\n\n protected onScroll(): void {\n const {clientHeight, scrollTop, scrollHeight} = this.el;\n const top = this.elements()[0]?.nativeElement.clientHeight || 0;\n const max = this.content()?.nativeElement.clientHeight || Infinity;\n const height = Math.min(clientHeight, max);\n const scrolled = Math.min(scrollTop, height - top);\n const transform = `translate3d(0, ${-1 * scrolled}px, 0)`;\n\n this.el.style.setProperty('--t-height', `${scrollHeight}px`);\n this.el.style.setProperty('overflow', 'scroll');\n this.el.animate([{transform}], OPTIONS);\n }\n}\n","@for (stop of stops(); track $index) {\n <div\n #stops\n class=\"t-stop\"\n [style.inset-block-start]=\"stop\"\n ></div>\n}\n<div\n #content\n class=\"t-content\"\n (resize)=\"onScroll()\"\n>\n <ng-content />\n</div>\n<div class=\"t-bottom\"></div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.template.html","../../../projects/addon-mobile/components/mobile-calendar-dropdown/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.ts"],"sourcesContent":["import {contentChild, Directive, inject} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TuiItemsHandlersDirective} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/portals/dropdown';\nimport {\n type TuiInputDateBase,\n TuiInputDateDirective,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateRangeDirective} from '@taiga-ui/kit/components/input-date-range';\nimport {TuiInputDateTimeDirective} from '@taiga-ui/kit/components/input-date-time';\n\nimport {TuiMobileCalendarDropdownComponent} from './mobile-calendar-dropdown.component';\n\n@Directive({\n selector: '[tuiMobileCalendar]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiMobileCalendarDropdownComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiMobileCalendarDropdown {\n public readonly single = contentChild(TuiInputDateDirective);\n public readonly range = contentChild(TuiInputDateRangeDirective);\n public readonly dateTime = contentChild(TuiInputDateTimeDirective);\n public readonly handlers = inject(TuiItemsHandlersDirective);\n\n public get date():\n | TuiInputDateBase<readonly [TuiDay, TuiTime | null]>\n | TuiInputDateBase<TuiDay>\n | TuiInputDateBase<TuiDayRange>\n | undefined {\n return this.single() || this.range() || this.dateTime();\n }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {TuiMobileCalendar} from '@taiga-ui/addon-mobile/components/mobile-calendar';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayLike,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {\n calculateDisabledItemHandler,\n TUI_DAY_CAPS_MAPPER,\n} from '@taiga-ui/kit/components/calendar-range';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {type Observer} from 'rxjs';\n\nimport {TuiMobileCalendarDropdown} from './mobile-calendar-dropdown.directive';\n\nexport interface TuiMobileCalendarData {\n disabledItemHandler?: TuiBooleanHandler<TuiDay>;\n max?: TuiDay | null;\n min?: TuiDay | null;\n multi?: boolean;\n single?: boolean;\n}\n\n@Component({\n selector: 'tui-mobile-calendar-dropdown',\n imports: [TuiMapperPipe, TuiMobileCalendar],\n templateUrl: './mobile-calendar-dropdown.template.html',\n styleUrl: './mobile-calendar-dropdown.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiActiveZone, TuiAnimated],\n})\nexport class TuiMobileCalendarDropdownComponent {\n // TODO: Rework to use TuiDropdownOpenDirective so the focus returns to the field on closing\n private readonly dropdown = inject(TuiDropdownDirective, {optional: true});\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly context = injectContext<Record<string, any>>({optional: true});\n private readonly observer?: Observer<unknown> = this.context?.$implicit;\n private readonly data: TuiMobileCalendarData = this.context?.data || {};\n\n // TODO: Refactor to proper Date, DateMulti and DateRange components after they are added to kit\n protected selectedPeriod: TuiDayRange | null = null;\n protected readonly control: any = inject(TuiControl, {optional: true});\n protected readonly directive = inject(TuiMobileCalendarDropdown, {optional: true});\n protected readonly multi = this.data.multi || this.is('tui-input-date[multiple]');\n protected readonly range =\n !!this.directive?.range() || this.is('tui-input-date-range');\n\n protected readonly single =\n !!this.directive?.single() ||\n !!this.directive?.dateTime() ||\n this.data.single || // TODO(v5): use `rangeMode` from DI token `TUI_CALENDAR_SHEET_DEFAULT_OPTIONS`\n this.is('tui-input-date:not([multiple])');\n\n protected readonly value = computed<TuiDay | TuiDayRange | null>(\n (value = this.directive?.date?.value()) =>\n Array.isArray(value) ? value[0] : value,\n );\n\n constructor() {\n this.keyboard.hide();\n }\n\n public max(): TuiDay {\n return (\n this.directive?.date?.max() ??\n (this.data.max ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.max,\n this.selectedPeriod,\n this.control.maxLength,\n false,\n )\n : this.control?.max) ||\n TUI_LAST_DAY)\n );\n }\n\n public min(): TuiDay {\n return (\n this.directive?.date?.min() ??\n (this.data.min ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.min,\n this.selectedPeriod,\n this.control.maxLength,\n true,\n )\n : this.control?.min) ||\n TUI_FIRST_DAY)\n );\n }\n\n public onValueChange(value: TuiDay | TuiDayRange | readonly TuiDay[] | null): void {\n if (!this.range) {\n return;\n }\n\n if (value === null || value instanceof TuiDayRange) {\n this.selectedPeriod = value;\n } else if (value instanceof TuiDay) {\n this.selectedPeriod = new TuiDayRange(value, value);\n }\n }\n\n protected get handler(): TuiBooleanHandler<TuiDay> {\n return (\n this.directive?.handlers.disabledItemHandler() ||\n this.data.disabledItemHandler ||\n this.control?.disabledItemHandler ||\n TUI_FALSE_HANDLER\n );\n }\n\n protected close(): void {\n this.dropdown?.toggle(false);\n this.observer?.complete();\n this.keyboard.show();\n }\n\n protected confirm(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n const normalizedValue = this.range ? this.selectedPeriod : value;\n\n if (this.control) {\n this.control.value = normalizedValue;\n }\n\n if (normalizedValue) {\n this.directive?.date?.setDate(normalizedValue);\n }\n\n this.observer?.next(normalizedValue);\n this.close();\n }\n\n protected readonly mapper = (\n disabledItemHandler: TuiBooleanHandler<TuiDay>,\n value: TuiDayRange | null,\n minLength: TuiDayLike | null = null,\n ): TuiBooleanHandler<TuiDay> =>\n calculateDisabledItemHandler(disabledItemHandler, value, minLength);\n\n private is(selector: string): boolean {\n return !!this.dropdown?.el.closest(selector);\n }\n}\n","<tui-mobile-calendar\n [disabledItemHandler]=\"handler | tuiMapper: mapper : selectedPeriod : control?.minLength\"\n [max]=\"max()\"\n [min]=\"min()\"\n [multi]=\"multi\"\n [single]=\"single\"\n [value]=\"value()\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n (valueChange)=\"onValueChange($event)\"\n/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar-dropdown.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.directive.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.component.ts","../../../projects/addon-mobile/components/mobile-calendar-dropdown/mobile-calendar-dropdown.template.html","../../../projects/addon-mobile/components/mobile-calendar-dropdown/taiga-ui-addon-mobile-components-mobile-calendar-dropdown.ts"],"sourcesContent":["import {contentChild, Directive, inject} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {TuiItemsHandlersDirective} from '@taiga-ui/core/directives/items-handlers';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/portals/dropdown';\nimport {\n type TuiInputDateBase,\n TuiInputDateDirective,\n} from '@taiga-ui/kit/components/input-date';\nimport {TuiInputDateRangeDirective} from '@taiga-ui/kit/components/input-date-range';\nimport {TuiInputDateTimeDirective} from '@taiga-ui/kit/components/input-date-time';\n\nimport {TuiMobileCalendarDropdownComponent} from './mobile-calendar-dropdown.component';\n\n@Directive({\n selector: '[tuiMobileCalendar]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiMobileCalendarDropdownComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiMobileCalendarDropdown {\n public readonly single = contentChild(TuiInputDateDirective);\n public readonly range = contentChild(TuiInputDateRangeDirective);\n public readonly dateTime = contentChild(TuiInputDateTimeDirective);\n public readonly handlers = inject(TuiItemsHandlersDirective);\n\n public get date():\n | TuiInputDateBase<readonly [TuiDay, TuiTime | null]>\n | TuiInputDateBase<TuiDay>\n | TuiInputDateBase<TuiDayRange>\n | undefined {\n return this.single() || this.range() || this.dateTime();\n }\n}\n","import {ChangeDetectionStrategy, Component, computed, inject} from '@angular/core';\nimport {TuiMobileCalendar} from '@taiga-ui/addon-mobile/components/mobile-calendar';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TuiControl} from '@taiga-ui/cdk/classes';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n type TuiDayLike,\n TuiDayRange,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {\n calculateDisabledItemHandler,\n TUI_DAY_CAPS_MAPPER,\n} from '@taiga-ui/kit/components/calendar-range';\nimport {injectContext} from '@taiga-ui/polymorpheus';\nimport {type Observer} from 'rxjs';\n\nimport {TuiMobileCalendarDropdown} from './mobile-calendar-dropdown.directive';\n\nexport interface TuiMobileCalendarData {\n disabledItemHandler?: TuiBooleanHandler<TuiDay>;\n max?: TuiDay | null;\n min?: TuiDay | null;\n multi?: boolean;\n single?: boolean;\n}\n\n@Component({\n selector: 'tui-mobile-calendar-dropdown',\n imports: [TuiMapperPipe, TuiMobileCalendar],\n templateUrl: './mobile-calendar-dropdown.template.html',\n styleUrl: './mobile-calendar-dropdown.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiActiveZone, TuiAnimated],\n})\nexport class TuiMobileCalendarDropdownComponent {\n // TODO: Rework to use TuiDropdownOpenDirective so the focus returns to the field on closing\n private readonly dropdown = inject(TuiDropdownDirective, {optional: true});\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly context = injectContext<Record<string, any>>({optional: true});\n private readonly observer?: Observer<unknown> = this.context?.$implicit;\n private readonly data: TuiMobileCalendarData = this.context?.data || {};\n\n // TODO: Refactor to proper Date, DateMulti and DateRange components after they are added to kit\n protected selectedPeriod: TuiDayRange | null = null;\n protected readonly control: any = inject(TuiControl, {optional: true});\n protected readonly directive = inject(TuiMobileCalendarDropdown, {optional: true});\n protected readonly multi = this.data.multi || this.is('tui-input-date[multiple]');\n\n protected readonly range =\n !!this.directive?.range() || this.is('tui-input-date-range');\n\n protected readonly single =\n !!this.directive?.single() ||\n !!this.directive?.dateTime() ||\n this.data.single || // TODO(v5): use `rangeMode` from DI token `TUI_CALENDAR_SHEET_DEFAULT_OPTIONS`\n this.is('tui-input-date:not([multiple])');\n\n protected readonly value = computed<TuiDay | TuiDayRange | null>(\n (value = this.directive?.date?.value()) =>\n Array.isArray(value) ? value[0] : value,\n );\n\n constructor() {\n this.keyboard.hide();\n }\n\n public max(): TuiDay {\n return (\n this.directive?.date?.max() ??\n (this.data.max ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.max,\n this.selectedPeriod,\n this.control.maxLength,\n false,\n )\n : this.control?.max) ||\n TUI_LAST_DAY)\n );\n }\n\n public min(): TuiDay {\n return (\n this.directive?.date?.min() ??\n (this.data.min ||\n (this.range\n ? TUI_DAY_CAPS_MAPPER(\n this.control.min,\n this.selectedPeriod,\n this.control.maxLength,\n true,\n )\n : this.control?.min) ||\n TUI_FIRST_DAY)\n );\n }\n\n public onValueChange(value: TuiDay | TuiDayRange | readonly TuiDay[] | null): void {\n if (!this.range) {\n return;\n }\n\n if (value === null || value instanceof TuiDayRange) {\n this.selectedPeriod = value;\n } else if (value instanceof TuiDay) {\n this.selectedPeriod = new TuiDayRange(value, value);\n }\n }\n\n protected get handler(): TuiBooleanHandler<TuiDay> {\n return (\n this.directive?.handlers.disabledItemHandler() ||\n this.data.disabledItemHandler ||\n this.control?.disabledItemHandler ||\n TUI_FALSE_HANDLER\n );\n }\n\n protected close(): void {\n this.dropdown?.toggle(false);\n this.observer?.complete();\n this.keyboard.show();\n }\n\n protected confirm(value: TuiDay | TuiDayRange | readonly TuiDay[]): void {\n const normalizedValue = this.range ? this.selectedPeriod : value;\n\n if (this.control) {\n this.control.value = normalizedValue;\n }\n\n if (normalizedValue) {\n this.directive?.date?.setDate(normalizedValue);\n }\n\n this.observer?.next(normalizedValue);\n this.close();\n }\n\n protected readonly mapper = (\n disabledItemHandler: TuiBooleanHandler<TuiDay>,\n value: TuiDayRange | null,\n minLength: TuiDayLike | null = null,\n ): TuiBooleanHandler<TuiDay> =>\n calculateDisabledItemHandler(disabledItemHandler, value, minLength);\n\n private is(selector: string): boolean {\n return !!this.dropdown?.el.closest(selector);\n }\n}\n","<tui-mobile-calendar\n [disabledItemHandler]=\"handler | tuiMapper: mapper : selectedPeriod : control?.minLength\"\n [max]=\"max()\"\n [min]=\"min()\"\n [multi]=\"multi\"\n [single]=\"single\"\n [value]=\"value()\"\n (cancel)=\"close()\"\n (confirm)=\"confirm($event)\"\n (valueChange)=\"onValueChange($event)\"\n/>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -417,7 +417,7 @@ class TuiMobileCalendar {
417
417
  return (year - this.activeYear) * MONTHS_IN_YEAR;
418
418
  }
419
419
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMobileCalendar, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
420
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: { classPropertyName: "single", publicName: "single", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledItemHandler: { classPropertyName: "disabledItemHandler", publicName: "disabledItemHandler", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cancel: "cancel", confirm: "confirm", value: "valueChange" }, host: { listeners: { "mousedown.prevent": "0" }, properties: { "class._ios": "isIOS", "class._initialized": "initialized" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScroll", first: true, predicate: ["yearsScroll"], descendants: true, isSignal: true }, { propertyName: "monthsScroll", first: true, predicate: ["monthsScroll"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single() ? texts[0] : multi() ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScroll\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScroll\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [month]=\"month\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;min-inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiMobileCalendarSheet, selector: "tui-mobile-calendar-sheet" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { kind: "directive", type: TuiTouchable, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
420
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiMobileCalendar, isStandalone: true, selector: "tui-mobile-calendar", inputs: { single: { classPropertyName: "single", publicName: "single", isSignal: true, isRequired: false, transformFunction: null }, multi: { classPropertyName: "multi", publicName: "multi", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null }, disabledItemHandler: { classPropertyName: "disabledItemHandler", publicName: "disabledItemHandler", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { cancel: "cancel", confirm: "confirm", value: "valueChange" }, host: { listeners: { "mousedown.prevent": "0" }, properties: { "class._initialized": "initialized", "class._ios": "isIOS" } }, providers: TUI_MOBILE_CALENDAR_PROVIDERS, viewQueries: [{ propertyName: "yearsScroll", first: true, predicate: ["yearsScroll"], descendants: true, isSignal: true }, { propertyName: "monthsScroll", first: true, predicate: ["monthsScroll"], descendants: true, isSignal: true }], ngImport: i0, template: "@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single() ? texts[0] : multi() ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScroll\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScroll\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [month]=\"month\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;min-inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: CdkFixedSizeVirtualScroll, selector: "cdk-virtual-scroll-viewport[itemSize]", inputs: ["itemSize", "minBufferPx", "maxBufferPx"] }, { kind: "directive", type: CdkVirtualForOf, selector: "[cdkVirtualFor][cdkVirtualForOf]", inputs: ["cdkVirtualForOf", "cdkVirtualForTrackBy", "cdkVirtualForTemplate", "cdkVirtualForTemplateCacheSize"] }, { kind: "component", type: CdkVirtualScrollViewport, selector: "cdk-virtual-scroll-viewport", inputs: ["orientation", "appendOnly"], outputs: ["scrolledIndexChange"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }, { kind: "directive", type: TuiLink, selector: "a[tuiLink], button[tuiLink]" }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "component", type: TuiMobileCalendarSheet, selector: "tui-mobile-calendar-sheet" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRipple, selector: "[tuiRipple]", inputs: ["tuiRipple"] }, { kind: "directive", type: TuiTouchable, selector: "[tuiTouchable]", inputs: ["tuiTouchable"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
421
421
  }
422
422
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMobileCalendar, decorators: [{
423
423
  type: Component,
@@ -434,8 +434,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
434
434
  TuiRipple,
435
435
  TuiTouchable,
436
436
  ], changeDetection: ChangeDetectionStrategy.OnPush, providers: TUI_MOBILE_CALENDAR_PROVIDERS, host: {
437
- '[class._ios]': 'isIOS',
438
437
  '[class._initialized]': 'initialized',
438
+ '[class._ios]': 'isIOS',
439
439
  '(mousedown.prevent)': '0',
440
440
  }, template: "@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single() ? texts[0] : multi() ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScroll\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScroll\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [month]=\"month\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n", styles: [":host{display:block;block-size:100%;color:var(--tui-text-primary);overscroll-behavior:none;-webkit-tap-highlight-color:transparent}:host ::ng-deep .t-cell:before,:host ::ng-deep .t-cell:after{transform:translateZ(1px)}.t-header{position:relative;display:flex;align-items:center;block-size:3.5rem;padding:0 1rem;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-header{block-size:2.75rem;border-block-end:none}.t-close{inline-size:1.5rem;min-inline-size:1.5rem;block-size:1.5rem;margin-inline-end:2rem}:host._ios .t-close{display:none}.t-link{margin-inline-start:auto;flex-shrink:0;font-size:.875rem;line-height:1rem;font-weight:500;text-transform:uppercase;color:var(--tui-text-action)}.t-link_close{display:none}:host._ios .t-link{min-inline-size:3.75rem;text-align:end;font-size:.9375rem;line-height:1.125rem;font-weight:400;letter-spacing:.018125rem;text-transform:none}:host._ios .t-link_close{display:block;margin:0 auto 0 0;text-align:start}.t-label{flex-grow:1;margin:0;font-size:1.25rem;line-height:3.5rem;font-weight:500;letter-spacing:-.0125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.t-label+.t-link{padding-inline-start:1rem}:host._ios .t-label{font-size:1.0625rem;font-weight:600;letter-spacing:-.025625rem;text-align:center}.t-years{scrollbar-width:none;-ms-overflow-style:none;block-size:4.0625rem;background-color:var(--tui-background-base);box-shadow:0 .5px var(--tui-border-normal)}.t-years::-webkit-scrollbar,.t-years::-webkit-scrollbar-thumb{display:none}:host._ios .t-years{background-color:transparent}.t-years-wrapper{display:flex;block-size:4.0625rem}.t-year{-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;outline:none;inline-size:20vw;flex-shrink:0;font-size:.9375rem;font-weight:700;letter-spacing:.015625rem;cursor:pointer;opacity:.1;transform:scale(.73);transition:color,opacity,transform .2s}.t-year[data-state=adjacent]{transform:scale(.86);opacity:.3}.t-year[data-state=active]{color:var(--tui-text-action);opacity:1;transform:scale(1)}.t-week{display:flex;align-items:center;block-size:1.875rem;inline-size:20.75rem;max-inline-size:100%;margin:0 auto;font-size:.75rem}:host._ios .t-week{inline-size:22.625rem;font-size:.6875rem;font-weight:500;color:var(--tui-text-secondary)}.t-day{flex:1;text-align:center}.t-months{scrollbar-width:none;-ms-overflow-style:none;block-size:calc(100% - 9.5rem);box-shadow:0 -1px var(--tui-border-normal);overflow-x:hidden}.t-months::-webkit-scrollbar,.t-months::-webkit-scrollbar-thumb{display:none}:host._ios .t-months{block-size:calc(100% - 8.75rem)}.t-month-wrapper{display:flex;margin:.625rem 0 -.625rem;block-size:22.125rem;flex-direction:column}.t-month{block-size:2.75rem;inline-size:100%;line-height:2.75rem;padding-inline-start:1rem;font-size:.875rem;font-weight:500;text-transform:uppercase;margin:0 0 1.25rem;box-sizing:border-box;border-block-end:.5px solid var(--tui-border-normal)}:host._ios .t-month{block-size:3.125rem;margin:0;border-block-end:none;text-transform:none;font-size:1.375rem;line-height:3.125rem;letter-spacing:.02rem;font-weight:700}.t-calendar{margin:0 auto;transition:opacity .2s}.t-week,.t-years,.t-months{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;opacity:0}:host(._initialized) .t-week,:host(._initialized) .t-years,:host(._initialized) .t-months{opacity:1}\n"] }]
441
441
  }], ctorParameters: () => [] });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar/calendar-date-stream.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.template.html","../../../projects/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {InjectionToken, Optional, type Provider, Self} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, of} from 'rxjs';\n\nexport const TUI_CALENDAR_DATE_STREAM = new InjectionToken<\n Observable<TuiDay | TuiDayRange | null>\n>(ngDevMode ? 'TUI_CALENDAR_DATE_STREAM' : '');\n\nexport function tuiDateStreamWithTransformer(\n transformer: InjectionToken<TuiValueTransformer<any>>,\n): Provider {\n return {\n provide: TUI_CALENDAR_DATE_STREAM,\n deps: [\n [new Optional(), new Self(), NgControl],\n [new Optional(), transformer],\n ],\n useFactory: tuiControlValueFactory,\n };\n}\n\nfunction tuiControlValueFactory<\n T extends TuiDay | TuiDayRange | [TuiDay, TuiTime | null],\n>(\n control: NgControl | null,\n transformer?: TuiValueTransformer<T> | null,\n): Observable<T | null> | null {\n return control\n ? tuiControlValue(control).pipe(\n map((value) =>\n transformer ? transformer?.fromControlValue(value) : (value as T),\n ),\n )\n : of(null);\n}\n","import {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\n\nfunction getCycle(options: {\n label: number;\n week: number;\n yearCycle: number;\n startingYear: number;\n}): ReadonlyArray<readonly number[]> {\n return Array.from({length: options.yearCycle}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) =>\n options.label +\n weekCount({year: i, month, startingYear: options.startingYear}) *\n options.week,\n ),\n );\n}\n\nfunction weekCount(options: {year: number; month: number; startingYear: number}): number {\n const firstOfMonth = new Date(options.year + options.startingYear, options.month, 1);\n const lastOfMonth = new Date(\n options.year + options.startingYear,\n options.month + 1,\n 0,\n );\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\n\nexport const ANDROID_CYCLE = getCycle({\n label: ANDROID_LABEL,\n week: ANDROID_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n\nexport const IOS_CYCLE = getCycle({\n label: IOS_LABEL,\n week: IOS_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n","import {\n type CdkVirtualScrollViewport,\n type VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {inject} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear = 28,\n lastMonth = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard-wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendar} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly destroy$ = new Subject<void>();\n private readonly index$ = new Subject<number>();\n private viewport: CdkVirtualScrollViewport | null = null;\n\n public readonly scrolledIndexChange = this.index$.pipe(distinctUntilChanged());\n\n public attach(viewport: CdkVirtualScrollViewport): void {\n const cycle = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n public detach(): void {\n this.index$.complete();\n this.viewport = null;\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public onContentScrolled(): void {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n public onDataLengthChanged(): void {}\n public onContentRendered(): void {}\n public onRenderedOffsetChanged(): void {}\n\n public scrollToIndex(index: number, behavior: ScrollBehavior): void {\n this.viewport?.scrollToOffset(this.getOffsetForIndex(index), behavior);\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < (cycle[year]?.length ?? 0); month++) {\n accumulator += cycle[year]?.[month] ?? 0;\n\n if (accumulator - (cycle[year]?.[month] ?? 0) / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIOS\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport): void {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {InjectionToken, Optional, type Provider} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {type TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_DATE_STREAM} from './calendar-date-stream';\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\n/**\n * Stream for updating value\n */\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n ngDevMode ? 'TUI_VALUE_STREAM' : '',\n);\n\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [[new Optional(), TUI_CALENDAR_DATE_STREAM]],\n useFactory: (\n value$: Observable<TuiDayRange | null> | null,\n ): Observable<TuiDayRange | null> =>\n (value$ || EMPTY).pipe(tuiWatch(), takeUntilDestroyed()),\n },\n];\n","import {\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n} from '@angular/cdk/scrolling';\nimport {AsyncPipe, DOCUMENT} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n model,\n NgZone,\n output,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {WA_IS_E2E, WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TuiMobileCalendarSheet} from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';\nimport {TuiRipple} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchable} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {\n tuiTypedFromEvent,\n tuiZonefree,\n tuiZonefreeScheduler,\n} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_CALENDAR_SHEET_OPTIONS,\n TuiOrderWeekDaysPipe,\n} from '@taiga-ui/core/components/calendar';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n TUI_MONTHS,\n TUI_SHORT_WEEK_DAYS,\n} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit/tokens';\nimport {\n debounceTime,\n delay,\n filter,\n identity,\n map,\n mergeMap,\n type MonoTypeOperatorFunction,\n race,\n switchMap,\n take,\n takeUntil,\n timer,\n windowToggle,\n} from 'rxjs';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n@Component({\n selector: 'tui-mobile-calendar',\n imports: [\n AsyncPipe,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n TuiButton,\n TuiLink,\n TuiMapperPipe,\n TuiMobileCalendarSheet,\n TuiOrderWeekDaysPipe,\n TuiRipple,\n TuiTouchable,\n ],\n templateUrl: './mobile-calendar.template.html',\n styleUrl: './mobile-calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {\n '[class._ios]': 'isIOS',\n '[class._initialized]': 'initialized',\n '(mousedown.prevent)': '0',\n },\n})\nexport class TuiMobileCalendar implements AfterViewInit {\n private readonly yearsScroll = viewChild<CdkVirtualScrollViewport>('yearsScroll');\n private readonly monthsScroll = viewChild<CdkVirtualScrollViewport>('monthsScroll');\n private readonly today = TuiDay.currentLocal();\n private activeYear = 0;\n private activeMonth = 0;\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n private readonly ngZone = inject(NgZone);\n private readonly getYearsViewportSize = computed(\n () => this.yearsScroll()?.getViewportSize() || 0,\n );\n\n private readonly initialYear = computed((value = this.value()) => {\n if (!value) {\n return this.today.year;\n }\n\n if (value instanceof TuiDay) {\n return value.year;\n }\n\n if (!(value instanceof TuiDayRange)) {\n return value?.[0]?.year ?? this.today.year;\n }\n\n return value.to.year;\n });\n\n private readonly initialMonth = computed((value = this.value()) => {\n if (!value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (value instanceof TuiDay) {\n return value.month + (value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (!(value instanceof TuiDayRange)) {\n return (\n (value?.[0]?.month ?? this.today.month) +\n ((value?.[0]?.year ?? this.today.year) - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n return value.to.month + (value.to.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n });\n\n protected initialized = false;\n protected readonly isIOS = inject(WA_IS_IOS);\n protected readonly isE2E = inject(WA_IS_E2E);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly closeWord = inject(TUI_CLOSE_WORD);\n protected readonly cancelWord = inject(TUI_CANCEL_WORD);\n protected readonly doneWord = inject(TUI_DONE_WORD);\n protected readonly monthNames = inject(TUI_MONTHS);\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly chooseDayOrRangeTexts = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS, {\n optional: true,\n });\n\n protected readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n protected readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n /**\n * @deprecated use static DI options instead\n * ```\n * tuiCalendarSheetOptionsProvider({rangeMode: boolean})\n * ```\n * TODO(v5): delete it\n */\n public readonly single = input(!inject(TUI_CALENDAR_SHEET_OPTIONS).rangeMode);\n\n public readonly multi = input(false);\n\n public readonly min = input(TUI_FIRST_DAY);\n\n public readonly max = input(TUI_LAST_DAY);\n\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly cancel = output();\n\n public readonly confirm = output<TuiDay | TuiDayRange | readonly TuiDay[]>();\n\n public readonly value = model<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n\n constructor() {\n inject(TUI_VALUE_STREAM)\n .pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.value.set(value);\n });\n }\n\n public ngAfterViewInit(): void {\n this.activeYear = this.initialYear();\n this.activeMonth = this.initialMonth();\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n public setYear(year: number): void {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n timer(0, tuiZonefreeScheduler(this.ngZone))\n .pipe(tuiZonefree(this.ngZone), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToActiveMonth());\n }\n\n protected get yearWidth(): number {\n return this.doc.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n protected onClose(): void {\n this.cancel.emit();\n }\n\n protected onConfirm(): void {\n const value = this.value();\n\n if (value) {\n this.confirm.emit(value);\n } else {\n this.cancel.emit();\n }\n }\n\n protected onDayClick(day: TuiDay): void {\n const value = this.value();\n\n if (this.single()) {\n this.value.set(day);\n } else if (this.isMultiValue(value)) {\n this.value.set(toggleDay(value, day));\n } else if (value instanceof TuiDay) {\n this.value.set(TuiDayRange.sort(value, day));\n } else if (value instanceof TuiDayRange) {\n this.value.set(day);\n } else if (!value) {\n this.value.set(day);\n }\n }\n\n protected getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n protected onMonthChange(month: number): void {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private isMultiValue(day: unknown): day is readonly TuiDay[] | undefined {\n return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi();\n }\n\n private updateViewportDimension(): void {\n this.yearsScroll()?.checkViewportSize();\n this.monthsScroll()?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange(): void {\n this.updateViewportDimension();\n\n this.monthsScroll()\n ?.scrolledIndexChange.pipe(\n delay(tuiGetDuration(this.speed)),\n this.lateInit(),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.initialized = true;\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll(): void {\n const yearsScroll = this.yearsScroll();\n\n if (!yearsScroll) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n yearsScroll.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n yearsScroll.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n const click$ = tuiTypedFromEvent(yearsScroll.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScroll\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n mergeMap((x) => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(yearsScroll.measureScrollOffset() / this.yearWidth) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter((activeYear) => activeYear !== this.activeYear),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((activeYear) => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n yearsScroll.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME, tuiZonefreeScheduler(this.ngZone)),\n ).pipe(\n debounceTime(\n SCROLL_DEBOUNCE_TIME * 2,\n tuiZonefreeScheduler(this.ngZone),\n ),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveYear('smooth'));\n }\n\n private initMonthScroll(): void {\n const monthsScroll = this.monthsScroll();\n\n if (!monthsScroll) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n monthsScroll.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n monthsScroll.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n monthsScroll.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME, tuiZonefreeScheduler(this.ngZone)),\n ).pipe(\n debounceTime(\n SCROLL_DEBOUNCE_TIME * 2,\n tuiZonefreeScheduler(this.ngZone),\n ),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveMonth('smooth'));\n }\n\n private scrollToActiveYear(behavior: ScrollBehavior = 'auto'): void {\n this.yearsScroll()?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private scrollToActiveMonth(behavior: ScrollBehavior = 'auto'): void {\n this.monthsScroll()?.scrollToIndex(\n this.activeMonth,\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n\nfunction toggleDay(days: readonly TuiDay[] | null, day: TuiDay): readonly TuiDay[] {\n return (\n (days?.find((item) => item.daySame(day))\n ? days.filter((item) => !item.daySame(day))\n : days?.concat(day)) || []\n );\n}\n","@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single() ? texts[0] : multi() ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScroll\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScroll\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [month]=\"month\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAOO,MAAM,wBAAwB,GAAG,IAAI,cAAc,CAExD,SAAS,GAAG,0BAA0B,GAAG,EAAE;AAEvC,SAAU,4BAA4B,CACxC,WAAqD,EAAA;IAErD,OAAO;AACH,QAAA,OAAO,EAAE,wBAAwB;AACjC,QAAA,IAAI,EAAE;YACF,CAAC,IAAI,QAAQ,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,CAAC;AACvC,YAAA,CAAC,IAAI,QAAQ,EAAE,EAAE,WAAW,CAAC;AAChC,SAAA;AACD,QAAA,UAAU,EAAE,sBAAsB;KACrC;AACL;AAEA,SAAS,sBAAsB,CAG3B,OAAyB,EACzB,WAA2C,EAAA;AAE3C,IAAA,OAAO;AACH,UAAE,eAAe,CAAC,OAAO,CAAC,CAAC,IAAI,CACzB,GAAG,CAAC,CAAC,KAAK,KACN,WAAW,GAAG,WAAW,EAAE,gBAAgB,CAAC,KAAK,CAAC,GAAI,KAAW,CACpE;AAEP,UAAE,EAAE,CAAC,IAAI,CAAC;AAClB;;ACnCA,SAAS,QAAQ,CAAC,OAKjB,EAAA;AACG,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,OAAO,CAAC,SAAS,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAChD,KAAK,CAAC,IAAI,CACN,EAAC,MAAM,EAAE,cAAc,EAAC,EACxB,CAAC,CAAC,EAAE,KAAK,KACL,OAAO,CAAC,KAAK;AACb,QAAA,SAAS,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAC,CAAC;AAC3D,YAAA,OAAO,CAAC,IAAI,CACvB,CACJ;AACL;AAEA,SAAS,SAAS,CAAC,OAA4D,EAAA;AAC3E,IAAA,MAAM,YAAY,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACpF,MAAM,WAAW,GAAG,IAAI,IAAI,CACxB,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,YAAY,EACnC,OAAO,CAAC,KAAK,GAAG,CAAC,EACjB,CAAC,CACJ;AACD,IAAA,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,EAAE,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,GAAG,CAAC;IAErE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;AAC9B;AAEO,MAAM,oBAAoB,GAAG;AAC7B,MAAM,YAAY,GAAG;AACrB,MAAM,aAAa,GAAG;AACtB,MAAM,KAAK,GAAG;AACd,MAAM,MAAM,GAAG;AACf,MAAM,aAAa,GAAG;AACtB,MAAM,YAAY,GAAG;AACrB,MAAM,SAAS,GAAG;AAClB,MAAM,QAAQ,GAAG;AACjB,MAAM,YAAY,GAAG;AAErB,MAAM,aAAa,GAAG,QAAQ,CAAC;AAClC,IAAA,KAAK,EAAE,aAAa;AACpB,IAAA,IAAI,EAAE,YAAY;AAClB,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,YAAY,EAAE,aAAa;AAC9B,CAAA;AAEM,MAAM,SAAS,GAAG,QAAQ,CAAC;AAC9B,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,IAAI,EAAE,QAAQ;AACd,IAAA,SAAS,EAAE,YAAY;AACvB,IAAA,YAAY,EAAE,aAAa;AAC9B,CAAA;;ACrCD,MAAM,oBAAoB,GAAG,WAAW,CAAC,aAAa,CAAC;AACvD,MAAM,gBAAgB,GAAG,WAAW,CAAC,SAAS,CAAC;AAE/C,SAAS,WAAW,CAChB,KAAuC,EACvC,QAAQ,GAAG,EAAE,EACb,SAAS,GAAG,EAAE,EAAA;AAEd,IAAA,OAAO,KAAK,CAAC,MAAM,CACf,CAAC,KAAK,EAAE,IAAI,EAAE,SAAS,KACnB,SAAS,IAAI;AACT,UAAE,KAAK;AACL,YAAA,IAAI,CAAC,MAAM,CACP,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,KACnB,SAAS,GAAG,QAAQ;AACpB,iBAAC,SAAS,KAAK,QAAQ,IAAI,UAAU,GAAG,SAAS;kBAC3C,GAAG,GAAG;AACR,kBAAE,GAAG,EACb,CAAC;AAEP,UAAE,KAAK,EACf,CAAC,CACJ;AACL;AAEA;;;;AAIG;MACU,yBAAyB,CAAA;AAAtC,IAAA,WAAA,GAAA;AACqB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;AACzB,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;AAC9B,QAAA,IAAA,CAAA,MAAM,GAAG,IAAI,OAAO,EAAU;QACvC,IAAA,CAAA,QAAQ,GAAoC,IAAI;QAExC,IAAA,CAAA,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAuGlF;AArGW,IAAA,MAAM,CAAC,QAAkC,EAAA;AAC5C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,oBAAoB;AAElE,QAAA,IAAI,CAAC,QAAQ,GAAG,QAAQ;QACxB,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,GAAG,CAAC,CAAC;AAC5C,QAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC3C;IAEO,MAAM,GAAA;AACT,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;AACtB,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;IAC5B;IAEO,iBAAiB,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;AACf,YAAA,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC3C;IACJ;;AAGO,IAAA,mBAAmB,KAAU;AAC7B,IAAA,iBAAiB,KAAU;AAC3B,IAAA,uBAAuB,KAAU;IAEjC,aAAa,CAAC,KAAa,EAAE,QAAwB,EAAA;AACxD,QAAA,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;IAC1E;AAEQ,IAAA,iBAAiB,CAAC,KAAa,EAAA;AACnC,QAAA,MAAM,KAAK,GAAG,KAAK,GAAG,cAAc;QACpC,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,cAAc;QAE7C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC;IAC1C;AAEQ,IAAA,iBAAiB,CAAC,MAAc,EAAA;AACpC,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,aAAa;AACpD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,GAAG,gBAAgB,GAAG,oBAAoB;AACxE,QAAA,MAAM,SAAS,GAAG,MAAM,GAAG,WAAW;AACtC,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,GAAG,SAAS,IAAI,WAAW,IAAI,YAAY;QAEjE,IAAI,WAAW,GAAG,CAAC;AAEnB,QAAA,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;gBAC7D,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;AAExC,gBAAA,IAAI,WAAW,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,EAAE;AAC3D,oBAAA,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,IAAI,IAAI,cAAc,GAAG,KAAK,EAAE,CAAC,CAAC;gBAC/D;YACJ;QACJ;AAEA,QAAA,OAAO,KAAK;IAChB;IAEQ,aAAa,CAAC,IAAY,EAAE,KAAc,EAAA;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,SAAS,GAAG,aAAa;AACpD,QAAA,MAAM,SAAS,GAAG,IAAI,GAAG,YAAY;QACrC,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC;QAC5D,MAAM,UAAU,GAAG,CAAC,IAAI,GAAG,SAAS,IAAI,YAAY;AACpD,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC;cACxB,UAAU,GAAG;AACf,cAAE,UAAU,GAAG,oBAAoB;QAEvC,OAAO,gBAAgB,GAAG,eAAe;IAC7C;AAEQ,IAAA,mBAAmB,CAAC,QAAkC,EAAA;AAC1D,QAAA,MAAM,MAAM,GAAG,QAAQ,CAAC,mBAAmB,EAAE;QAC7C,MAAM,EAAC,KAAK,EAAE,GAAG,EAAC,GAAG,QAAQ,CAAC,gBAAgB,EAAE;AAChD,QAAA,MAAM,YAAY,GAAG,QAAQ,CAAC,eAAe,EAAE;AAC/C,QAAA,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,EAAE;AAC3C,QAAA,MAAM,QAAQ,GAAG,EAAC,KAAK,EAAE,GAAG,EAAC;QAC7B,MAAM,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;QACxD,MAAM,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;QAE1D,IAAI,WAAW,GAAG,MAAM,IAAI,KAAK,KAAK,CAAC,EAAE;YACrC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC;YACzE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CACnB,UAAU,EACV,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC,CACzD;QACL;aAAO;AACH,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,YAAY;YAErE,IAAI,SAAS,GAAG,MAAM,IAAI,GAAG,KAAK,UAAU,EAAE;AAC1C,gBAAA,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;gBACrE,QAAQ,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CACnB,UAAU,EACV,IAAI,CAAC,iBAAiB,CAAC,MAAM,GAAG,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,CAC7D;YACL;QACJ;AAEA,QAAA,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC;AACnC,QAAA,QAAQ,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC;IACvC;AACH;;AClJD;;AAEG;AACI,MAAM,gBAAgB,GAAG,IAAI,cAAc,CAC9C,SAAS,GAAG,kBAAkB,GAAG,EAAE;AAGhC,MAAM,6BAA6B,GAAe;AACrD,IAAA;AACI,QAAA,OAAO,EAAE,uBAAuB;AAChC,QAAA,QAAQ,EAAE,yBAAyB;AACtC,KAAA;AACD,IAAA;AACI,QAAA,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,CAAC,CAAC,IAAI,QAAQ,EAAE,EAAE,wBAAwB,CAAC,CAAC;AAClD,QAAA,UAAU,EAAE,CACR,MAA6C,KAE7C,CAAC,MAAM,IAAI,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,kBAAkB,EAAE,CAAC;AAC/D,KAAA;;;MCkFQ,iBAAiB,CAAA;AAgG1B,IAAA,WAAA,GAAA;AA/FiB,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAA2B,aAAa,CAAC;AAChE,QAAA,IAAA,CAAA,YAAY,GAAG,SAAS,CAA2B,cAAc,CAAC;AAClE,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE;QACtC,IAAA,CAAA,UAAU,GAAG,CAAC;QACd,IAAA,CAAA,WAAW,GAAG,CAAC;AACN,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;AACtB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACpC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AACvB,QAAA,IAAA,CAAA,oBAAoB,GAAG,QAAQ,CAC5C,MAAM,IAAI,CAAC,WAAW,EAAE,EAAE,eAAe,EAAE,IAAI,CAAC,CACnD;QAEgB,IAAA,CAAA,WAAW,GAAG,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAI;YAC7D,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI;YAC1B;AAEA,YAAA,IAAI,KAAK,YAAY,MAAM,EAAE;gBACzB,OAAO,KAAK,CAAC,IAAI;YACrB;AAEA,YAAA,IAAI,EAAE,KAAK,YAAY,WAAW,CAAC,EAAE;AACjC,gBAAA,OAAO,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI;YAC9C;AAEA,YAAA,OAAO,KAAK,CAAC,EAAE,CAAC,IAAI;AACxB,QAAA,CAAC,CAAC;QAEe,IAAA,CAAA,YAAY,GAAG,QAAQ,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,KAAI;YAC9D,IAAI,CAAC,KAAK,EAAE;AACR,gBAAA,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,aAAa,IAAI,cAAc;YAChF;AAEA,YAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AACzB,gBAAA,OAAO,KAAK,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,aAAa,IAAI,cAAc;YACtE;AAEA,YAAA,IAAI,EAAE,KAAK,YAAY,WAAW,CAAC,EAAE;AACjC,gBAAA,QACI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;oBACtC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,aAAa,IAAI,cAAc;YAEhF;AAEA,YAAA,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,aAAa,IAAI,cAAc;AAC5E,QAAA,CAAC,CAAC;QAEQ,IAAA,CAAA,WAAW,GAAG,KAAK;AACV,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;AACzB,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAChC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC;AAClC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,eAAe,CAAC;AACpC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC;AAChC,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QAC/B,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,qBAAqB,GAAG,MAAM,CAAC,6BAA6B,EAAE;AAC7E,YAAA,QAAQ,EAAE,IAAI;AACjB,SAAA,CAAC;QAEiB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,EAAC,MAAM,EAAE,KAAK,EAAC,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC;AAChE,QAAA,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,IAAI,CAClC,EAAC,MAAM,EAAE,KAAK,GAAG,EAAE,EAAC,EACpB,CAAC,CAAC,EAAE,CAAC,KACD,IAAI,QAAQ,CACR,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,aAAa,EAC9C,CAAC,GAAG,cAAc,CACrB,CACR;AAED;;;;;;AAMG;QACa,IAAA,CAAA,MAAM,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,SAAS,CAAC;AAE7D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;AAEpB,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC;AAE1B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,YAAY,CAAC;AAEzB,QAAA,IAAA,CAAA,mBAAmB,GAC/B,KAAK,CAA4B,iBAAiB,CAAC;QAEvC,IAAA,CAAA,MAAM,GAAG,MAAM,EAAE;QAEjB,IAAA,CAAA,OAAO,GAAG,MAAM,EAA4C;AAE5D,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkD,IAAI,CAAC;QAgGjE,IAAA,CAAA,yBAAyB,GAGxC,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,KACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;aAClB,GAAG,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YACpC,mBAAmB,CAAC,IAAI,CAAC;QAnGzB,MAAM,CAAC,gBAAgB;aAClB,IAAI,CAAC,kBAAkB,EAAE;AACzB,aAAA,SAAS,CAAC,CAAC,KAAK,KAAI;AACjB,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;AACzB,QAAA,CAAC,CAAC;IACV;IAEO,eAAe,GAAA;AAClB,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE;;QAGtC,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAEO,IAAA,OAAO,CAAC,IAAY,EAAA;AACvB,QAAA,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE;YAC1B;QACJ;QAEA,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,IAAI;AACtB,QAAA,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;QAEjC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;AACrC,aAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAClE,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACpD;AAEA,IAAA,IAAc,SAAS,GAAA;QACnB,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,WAAW,GAAG,YAAY;IAC9D;IAEU,OAAO,GAAA;AACb,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;IACtB;IAEU,SAAS,GAAA;AACf,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAE1B,IAAI,KAAK,EAAE;AACP,YAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAC5B;aAAO;AACH,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QACtB;IACJ;AAEU,IAAA,UAAU,CAAC,GAAW,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAE1B,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB;AAAO,aAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AACjC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzC;AAAO,aAAA,IAAI,KAAK,YAAY,MAAM,EAAE;AAChC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD;AAAO,aAAA,IAAI,KAAK,YAAY,WAAW,EAAE;AACrC,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB;aAAO,IAAI,CAAC,KAAK,EAAE;AACf,YAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;QACvB;IACJ;AAEU,IAAA,QAAQ,CAAC,KAAa,EAAA;AAC5B,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE;AAC1B,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE;AAC9D,YAAA,OAAO,UAAU;QACrB;AAEA,QAAA,OAAO,IAAI;IACf;AAEU,IAAA,aAAa,CAAC,KAAa,EAAA;;QAEjC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YACtC;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,GAAG,KAAK;QAExB,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAE1C,QAAA,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU,EAAE;YAChC;QACJ;AAEA,QAAA,IAAI,CAAC,UAAU,GAAG,UAAU;QAC5B,IAAI,CAAC,kBAAkB,EAAE;IAC7B;AAUQ,IAAA,YAAY,CAAC,GAAY,EAAA;AAC7B,QAAA,OAAO,EAAE,GAAG,YAAY,MAAM,CAAC,IAAI,EAAE,GAAG,YAAY,WAAW,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE;IACpF;IAEQ,uBAAuB,GAAA;AAC3B,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,iBAAiB,EAAE;AACvC,QAAA,IAAI,CAAC,YAAY,EAAE,EAAE,iBAAiB,EAAE;IAC5C;IAEQ,QAAQ,GAAA;AACZ,QAAA,OAAO,IAAI,CAAC,oBAAoB,EAAE,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;IAClE;IAEQ,kBAAkB,GAAA;QACtB,IAAI,CAAC,uBAAuB,EAAE;QAE9B,IAAI,CAAC,YAAY;AACb,cAAE,mBAAmB,CAAC,IAAI,CACtB,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACjC,IAAI,CAAC,QAAQ,EAAE,EACf,IAAI,CAAC,CAAC,CAAC,EACP,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEtC,SAAS,CAAC,MAAK;AACZ,YAAA,IAAI,CAAC,WAAW,GAAG,IAAI;YACvB,IAAI,CAAC,uBAAuB,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,CAAC,kBAAkB,EAAE;YACzB,IAAI,CAAC,mBAAmB,EAAE;AAC9B,QAAA,CAAC,CAAC;IACV;IAEQ,cAAc,GAAA;AAClB,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,CAAC,WAAW,EAAE;YACd;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG,iBAAiB,CACjC,WAAW,CAAC,UAAU,CAAC,aAAa,EACpC,YAAY,EACZ,EAAC,OAAO,EAAE,IAAI,EAAC,CAClB;AACD,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAC/B,WAAW,CAAC,UAAU,CAAC,aAAa,EACpC,UAAU,EACV,EAAC,OAAO,EAAE,IAAI,EAAC,CAClB;AACD,QAAA,MAAM,MAAM,GAAG,iBAAiB,CAAC,WAAW,CAAC,UAAU,CAAC,aAAa,EAAE,OAAO,CAAC;;QAG/E;AACK,aAAA,eAAe;aACf,IAAI;;AAED,QAAA,YAAY,CAAC,WAAW,EAAE,MAAM,MAAM,CAAC,EACvC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;;QAElB,KAAK,CAAC,CAAC,CAAC,EACR,GAAG,CACC,MACI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;AAC9D,YAAA,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC;YAC5B,aAAa,CACpB,EACD,MAAM,CAAC,CAAC,UAAU,KAAK,UAAU,KAAK,IAAI,CAAC,UAAU,CAAC,EACtD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;AAEtC,aAAA,SAAS,CAAC,CAAC,UAAU,KAAI;YACtB,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC;AACnD,YAAA,IAAI,CAAC,UAAU,GAAG,UAAU;YAC5B,IAAI,CAAC,mBAAmB,EAAE;AAC9B,QAAA,CAAC,CAAC;;QAGN;AACK,aAAA,IAAI,CACD,SAAS,CAAC,MAAM,SAAS,CAAC,EAC1B,SAAS,CAAC,MACN,IAAI,CACA,WAAW,CAAC,eAAe,EAAE,EAC7B,KAAK,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CACjE,CAAC,IAAI,CACF,YAAY,CACR,oBAAoB,GAAG,CAAC,EACxB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CACpC,EACD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,WAAW,CAAC,CACzB,CACJ,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEtC,SAAS,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3D;IAEQ,eAAe,GAAA;AACnB,QAAA,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE;QAExC,IAAI,CAAC,YAAY,EAAE;YACf;QACJ;AAEA,QAAA,MAAM,WAAW,GAAG,iBAAiB,CACjC,YAAY,CAAC,UAAU,CAAC,aAAa,EACrC,YAAY,EACZ,EAAC,OAAO,EAAE,IAAI,EAAC,CAClB;AACD,QAAA,MAAM,SAAS,GAAG,iBAAiB,CAC/B,YAAY,CAAC,UAAU,CAAC,aAAa,EACrC,UAAU,EACV,EAAC,OAAO,EAAE,IAAI,EAAC,CAClB;;QAGD;AACK,aAAA,IAAI,CACD,SAAS,CAAC,MAAM,SAAS,CAAC,EAC1B,SAAS,CAAC,MACN,IAAI,CACA,YAAY,CAAC,eAAe,EAAE,EAC9B,KAAK,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CACjE,CAAC,IAAI,CACF,YAAY,CACR,oBAAoB,GAAG,CAAC,EACxB,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CACpC,EACD,IAAI,CAAC,CAAC,CAAC,EACP,SAAS,CAAC,WAAW,CAAC,CACzB,CACJ,EACD,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC;aAEtC,SAAS,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAC5D;IAEQ,kBAAkB,CAAC,WAA2B,MAAM,EAAA;AACxD,QAAA,IAAI,CAAC,WAAW,EAAE,EAAE,aAAa,CAC7B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,aAAa,GAAG,CAAC,EAAE,CAAC,CAAC,EAChD,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,CACjC;IACL;IAEQ,mBAAmB,CAAC,WAA2B,MAAM,EAAA;QACzD,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAC9B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,KAAK,GAAG,MAAM,GAAG,QAAQ,CACjC;IACL;AAEQ,IAAA,YAAY,CAAC,KAAa,EAAA;AAC9B,QAAA,OAAO,KAAK,KAAK,IAAI,CAAC,UAAU;IACpC;AAEQ,IAAA,WAAW,CAAC,KAAa,EAAA;AAC7B,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,cAAc,CAAC,GAAG,aAAa,GAAG,CAAC;IACtE;AAEQ,IAAA,cAAc,CAAC,IAAY,EAAA;QAC/B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,IAAI,cAAc;IACpD;+GAxWS,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAjB,iBAAiB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,GAAA,EAAA,EAAA,iBAAA,EAAA,KAAA,EAAA,UAAA,EAAA,KAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,MAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,mBAAA,EAAA,GAAA,EAAA,EAAA,UAAA,EAAA,EAAA,YAAA,EAAA,OAAA,EAAA,oBAAA,EAAA,aAAA,EAAA,EAAA,EAAA,SAAA,EAPf,6BAA6B,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,aAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxG5C,omFAyFA,EAAA,MAAA,EAAA,CAAA,y3GAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EDAQ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,yBAAyB,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,aAAA,EAAA,aAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACzB,eAAe,EAAA,QAAA,EAAA,kCAAA,EAAA,MAAA,EAAA,CAAA,iBAAA,EAAA,sBAAA,EAAA,uBAAA,EAAA,gCAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACf,wBAAwB,iJACxB,SAAS,EAAA,QAAA,EAAA,uEAAA,EAAA,MAAA,EAAA,CAAA,MAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,OAAO,EAAA,QAAA,EAAA,6BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACP,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,sBAAsB,EAAA,QAAA,EAAA,2BAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACtB,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,SAAS,EAAA,QAAA,EAAA,aAAA,EAAA,MAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACT,YAAY,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,CAAA,cAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYP,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAzB7B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qBAAqB,EAAA,OAAA,EACtB;wBACL,SAAS;wBACT,yBAAyB;wBACzB,eAAe;wBACf,wBAAwB;wBACxB,SAAS;wBACT,OAAO;wBACP,aAAa;wBACb,sBAAsB;wBACtB,oBAAoB;wBACpB,SAAS;wBACT,YAAY;AACf,qBAAA,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC,6BAA6B,EAAA,IAAA,EAClC;AACF,wBAAA,cAAc,EAAE,OAAO;AACvB,wBAAA,sBAAsB,EAAE,aAAa;AACrC,wBAAA,qBAAqB,EAAE,GAAG;AAC7B,qBAAA,EAAA,QAAA,EAAA,omFAAA,EAAA,MAAA,EAAA,CAAA,y3GAAA,CAAA,EAAA;;AA6WL,SAAS,SAAS,CAAC,IAA8B,EAAE,GAAW,EAAA;AAC1D,IAAA,QACI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;AACnC,UAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;UACxC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE;AAEtC;;AEheA;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-mobile-calendar.mjs","sources":["../../../projects/addon-mobile/components/mobile-calendar/calendar-date-stream.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.const.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.strategy.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.providers.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.component.ts","../../../projects/addon-mobile/components/mobile-calendar/mobile-calendar.template.html","../../../projects/addon-mobile/components/mobile-calendar/taiga-ui-addon-mobile-components-mobile-calendar.ts"],"sourcesContent":["import {InjectionToken, Optional, type Provider, Self} from '@angular/core';\nimport {NgControl} from '@angular/forms';\nimport {type TuiValueTransformer} from '@taiga-ui/cdk/classes';\nimport {type TuiDay, type TuiDayRange, type TuiTime} from '@taiga-ui/cdk/date-time';\nimport {tuiControlValue} from '@taiga-ui/cdk/observables';\nimport {map, type Observable, of} from 'rxjs';\n\nexport const TUI_CALENDAR_DATE_STREAM = new InjectionToken<\n Observable<TuiDay | TuiDayRange | null>\n>(ngDevMode ? 'TUI_CALENDAR_DATE_STREAM' : '');\n\nexport function tuiDateStreamWithTransformer(\n transformer: InjectionToken<TuiValueTransformer<any>>,\n): Provider {\n return {\n provide: TUI_CALENDAR_DATE_STREAM,\n deps: [\n [new Optional(), new Self(), NgControl],\n [new Optional(), transformer],\n ],\n useFactory: tuiControlValueFactory,\n };\n}\n\nfunction tuiControlValueFactory<\n T extends TuiDay | TuiDayRange | [TuiDay, TuiTime | null],\n>(\n control: NgControl | null,\n transformer?: TuiValueTransformer<T> | null,\n): Observable<T | null> | null {\n return control\n ? tuiControlValue(control).pipe(\n map((value) =>\n transformer ? transformer?.fromControlValue(value) : (value as T),\n ),\n )\n : of(null);\n}\n","import {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\n\nfunction getCycle(options: {\n label: number;\n week: number;\n yearCycle: number;\n startingYear: number;\n}): ReadonlyArray<readonly number[]> {\n return Array.from({length: options.yearCycle}, (_, i) =>\n Array.from(\n {length: MONTHS_IN_YEAR},\n (_, month) =>\n options.label +\n weekCount({year: i, month, startingYear: options.startingYear}) *\n options.week,\n ),\n );\n}\n\nfunction weekCount(options: {year: number; month: number; startingYear: number}): number {\n const firstOfMonth = new Date(options.year + options.startingYear, options.month, 1);\n const lastOfMonth = new Date(\n options.year + options.startingYear,\n options.month + 1,\n 0,\n );\n const days = lastOfMonth.getDate() + (firstOfMonth.getDay() || 7) - 1;\n\n return Math.ceil(days / 7);\n}\n\nexport const SCROLL_DEBOUNCE_TIME = 80;\nexport const YEARS_IN_ROW = 5;\nexport const STARTING_YEAR = 1900;\nexport const RANGE = 196;\nexport const BUFFER = 500;\nexport const ANDROID_LABEL = 64;\nexport const ANDROID_WEEK = 48;\nexport const IOS_LABEL = 50;\nexport const IOS_WEEK = 50;\nexport const YEARLY_CYCLE = 28;\n\nexport const ANDROID_CYCLE = getCycle({\n label: ANDROID_LABEL,\n week: ANDROID_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n\nexport const IOS_CYCLE = getCycle({\n label: IOS_LABEL,\n week: IOS_WEEK,\n yearCycle: YEARLY_CYCLE,\n startingYear: STARTING_YEAR,\n});\n","import {\n type CdkVirtualScrollViewport,\n type VirtualScrollStrategy,\n} from '@angular/cdk/scrolling';\nimport {inject} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {MONTHS_IN_YEAR} from '@taiga-ui/cdk/date-time';\nimport {distinctUntilChanged, Subject} from 'rxjs';\n\nimport {\n ANDROID_CYCLE,\n BUFFER,\n IOS_CYCLE,\n RANGE,\n YEARLY_CYCLE,\n} from './mobile-calendar.const';\n\nconst ANDROID_CYCLE_HEIGHT = reduceCycle(ANDROID_CYCLE);\nconst IOS_CYCLE_HEIGHT = reduceCycle(IOS_CYCLE);\n\nfunction reduceCycle(\n cycle: ReadonlyArray<readonly number[]>,\n lastYear = 28,\n lastMonth = 12,\n): number {\n return cycle.reduce(\n (total, year, yearIndex) =>\n yearIndex <= lastYear\n ? total +\n year.reduce(\n (sum, month, monthIndex) =>\n yearIndex < lastYear ||\n (yearIndex === lastYear && monthIndex < lastMonth)\n ? sum + month\n : sum,\n 0,\n )\n : total,\n 0,\n );\n}\n\n/**\n * This scroll strategy is hard-wired with styles for iOS and Android.\n * It is dependent on month height on those platforms and is designed to\n * work for {@link TuiMobileCalendar} with years 1906 to 2102\n */\nexport class TuiMobileCalendarStrategy implements VirtualScrollStrategy {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly destroy$ = new Subject<void>();\n private readonly index$ = new Subject<number>();\n private viewport: CdkVirtualScrollViewport | null = null;\n public readonly scrolledIndexChange = this.index$.pipe(distinctUntilChanged());\n\n public attach(viewport: CdkVirtualScrollViewport): void {\n const cycle = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n\n this.viewport = viewport;\n this.viewport.setTotalContentSize(cycle * 7);\n this.updateRenderedRange(this.viewport);\n }\n\n public detach(): void {\n this.index$.complete();\n this.viewport = null;\n this.destroy$.next();\n this.destroy$.complete();\n }\n\n public onContentScrolled(): void {\n if (this.viewport) {\n this.updateRenderedRange(this.viewport);\n }\n }\n\n /** These do not matter for this case */\n public onDataLengthChanged(): void {}\n public onContentRendered(): void {}\n public onRenderedOffsetChanged(): void {}\n\n public scrollToIndex(index: number, behavior: ScrollBehavior): void {\n this.viewport?.scrollToOffset(this.getOffsetForIndex(index), behavior);\n }\n\n private getOffsetForIndex(index: number): number {\n const month = index % MONTHS_IN_YEAR;\n const year = (index - month) / MONTHS_IN_YEAR;\n\n return this.computeHeight(year, month);\n }\n\n private getIndexForOffset(offset: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const cycleHeight = this.isIOS ? IOS_CYCLE_HEIGHT : ANDROID_CYCLE_HEIGHT;\n const remainder = offset % cycleHeight;\n const years = ((offset - remainder) / cycleHeight) * YEARLY_CYCLE;\n\n let accumulator = 0;\n\n for (let year = 0; year < cycle.length; year++) {\n for (let month = 0; month < (cycle[year]?.length ?? 0); month++) {\n accumulator += cycle[year]?.[month] ?? 0;\n\n if (accumulator - (cycle[year]?.[month] ?? 0) / 2 > remainder) {\n return Math.max((years + year) * MONTHS_IN_YEAR + month, 0);\n }\n }\n }\n\n return RANGE;\n }\n\n private computeHeight(year: number, month?: number): number {\n const cycle = this.isIOS ? IOS_CYCLE : ANDROID_CYCLE;\n const remainder = year % YEARLY_CYCLE;\n const remainderHeight = reduceCycle(cycle, remainder, month);\n const fullCycles = (year - remainder) / YEARLY_CYCLE;\n const fullCyclesHeight = this.isIOS\n ? fullCycles * IOS_CYCLE_HEIGHT\n : fullCycles * ANDROID_CYCLE_HEIGHT;\n\n return fullCyclesHeight + remainderHeight;\n }\n\n private updateRenderedRange(viewport: CdkVirtualScrollViewport): void {\n const offset = viewport.measureScrollOffset();\n const {start, end} = viewport.getRenderedRange();\n const viewportSize = viewport.getViewportSize();\n const dataLength = viewport.getDataLength();\n const newRange = {start, end};\n const firstVisibleIndex = this.getIndexForOffset(offset);\n const startBuffer = offset - this.getOffsetForIndex(start);\n\n if (startBuffer < BUFFER && start !== 0) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER * 2));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER),\n );\n } else {\n const endBuffer = this.getOffsetForIndex(end) - offset - viewportSize;\n\n if (endBuffer < BUFFER && end !== dataLength) {\n newRange.start = Math.max(0, this.getIndexForOffset(offset - BUFFER));\n newRange.end = Math.min(\n dataLength,\n this.getIndexForOffset(offset + viewportSize + BUFFER * 2),\n );\n }\n }\n\n viewport.setRenderedRange(newRange);\n viewport.setRenderedContentOffset(this.getOffsetForIndex(newRange.start));\n this.index$.next(firstVisibleIndex);\n }\n}\n","import {VIRTUAL_SCROLL_STRATEGY} from '@angular/cdk/scrolling';\nimport {InjectionToken, Optional, type Provider} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {type TuiDayRange} from '@taiga-ui/cdk/date-time';\nimport {tuiWatch} from '@taiga-ui/cdk/observables';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_DATE_STREAM} from './calendar-date-stream';\nimport {TuiMobileCalendarStrategy} from './mobile-calendar.strategy';\n\n/**\n * Stream for updating value\n */\nexport const TUI_VALUE_STREAM = new InjectionToken<Observable<TuiDayRange | null>>(\n ngDevMode ? 'TUI_VALUE_STREAM' : '',\n);\n\nexport const TUI_MOBILE_CALENDAR_PROVIDERS: Provider[] = [\n {\n provide: VIRTUAL_SCROLL_STRATEGY,\n useClass: TuiMobileCalendarStrategy,\n },\n {\n provide: TUI_VALUE_STREAM,\n deps: [[new Optional(), TUI_CALENDAR_DATE_STREAM]],\n useFactory: (\n value$: Observable<TuiDayRange | null> | null,\n ): Observable<TuiDayRange | null> =>\n (value$ || EMPTY).pipe(tuiWatch(), takeUntilDestroyed()),\n },\n];\n","import {\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n} from '@angular/cdk/scrolling';\nimport {AsyncPipe, DOCUMENT} from '@angular/common';\nimport {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n inject,\n input,\n model,\n NgZone,\n output,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {WA_IS_E2E, WA_IS_IOS} from '@ng-web-apis/platform';\nimport {TuiMobileCalendarSheet} from '@taiga-ui/addon-mobile/components/mobile-calendar-sheet';\nimport {TuiRipple} from '@taiga-ui/addon-mobile/directives/ripple';\nimport {TuiTouchable} from '@taiga-ui/addon-mobile/directives/touchable';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {\n MONTHS_IN_YEAR,\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiDay,\n TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {\n tuiTypedFromEvent,\n tuiZonefree,\n tuiZonefreeScheduler,\n} from '@taiga-ui/cdk/observables';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {\n TUI_CALENDAR_SHEET_OPTIONS,\n TuiOrderWeekDaysPipe,\n} from '@taiga-ui/core/components/calendar';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {\n TUI_ANIMATIONS_SPEED,\n TUI_CLOSE_WORD,\n TUI_COMMON_ICONS,\n TUI_MONTHS,\n TUI_SHORT_WEEK_DAYS,\n} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {\n TUI_CANCEL_WORD,\n TUI_CHOOSE_DAY_OR_RANGE_TEXTS,\n TUI_DONE_WORD,\n} from '@taiga-ui/kit/tokens';\nimport {\n debounceTime,\n delay,\n filter,\n identity,\n map,\n mergeMap,\n type MonoTypeOperatorFunction,\n race,\n switchMap,\n take,\n takeUntil,\n timer,\n windowToggle,\n} from 'rxjs';\n\nimport {\n RANGE,\n SCROLL_DEBOUNCE_TIME,\n STARTING_YEAR,\n YEARS_IN_ROW,\n} from './mobile-calendar.const';\nimport {\n TUI_MOBILE_CALENDAR_PROVIDERS,\n TUI_VALUE_STREAM,\n} from './mobile-calendar.providers';\n\n@Component({\n selector: 'tui-mobile-calendar',\n imports: [\n AsyncPipe,\n CdkFixedSizeVirtualScroll,\n CdkVirtualForOf,\n CdkVirtualScrollViewport,\n TuiButton,\n TuiLink,\n TuiMapperPipe,\n TuiMobileCalendarSheet,\n TuiOrderWeekDaysPipe,\n TuiRipple,\n TuiTouchable,\n ],\n templateUrl: './mobile-calendar.template.html',\n styleUrl: './mobile-calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: TUI_MOBILE_CALENDAR_PROVIDERS,\n host: {\n '[class._initialized]': 'initialized',\n '[class._ios]': 'isIOS',\n '(mousedown.prevent)': '0',\n },\n})\nexport class TuiMobileCalendar implements AfterViewInit {\n private readonly yearsScroll = viewChild<CdkVirtualScrollViewport>('yearsScroll');\n private readonly monthsScroll = viewChild<CdkVirtualScrollViewport>('monthsScroll');\n private readonly today = TuiDay.currentLocal();\n private activeYear = 0;\n private activeMonth = 0;\n private readonly destroyRef = inject(DestroyRef);\n private readonly doc = inject(DOCUMENT);\n private readonly speed = inject(TUI_ANIMATIONS_SPEED);\n private readonly ngZone = inject(NgZone);\n\n private readonly getYearsViewportSize = computed(\n () => this.yearsScroll()?.getViewportSize() || 0,\n );\n\n private readonly initialYear = computed((value = this.value()) => {\n if (!value) {\n return this.today.year;\n }\n\n if (value instanceof TuiDay) {\n return value.year;\n }\n\n if (!(value instanceof TuiDayRange)) {\n return value?.[0]?.year ?? this.today.year;\n }\n\n return value.to.year;\n });\n\n private readonly initialMonth = computed((value = this.value()) => {\n if (!value) {\n return this.today.month + (this.today.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (value instanceof TuiDay) {\n return value.month + (value.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n }\n\n if (!(value instanceof TuiDayRange)) {\n return (\n (value?.[0]?.month ?? this.today.month) +\n ((value?.[0]?.year ?? this.today.year) - STARTING_YEAR) * MONTHS_IN_YEAR\n );\n }\n\n return value.to.month + (value.to.year - STARTING_YEAR) * MONTHS_IN_YEAR;\n });\n\n protected initialized = false;\n protected readonly isIOS = inject(WA_IS_IOS);\n protected readonly isE2E = inject(WA_IS_E2E);\n protected readonly icons = inject(TUI_COMMON_ICONS);\n protected readonly closeWord = inject(TUI_CLOSE_WORD);\n protected readonly cancelWord = inject(TUI_CANCEL_WORD);\n protected readonly doneWord = inject(TUI_DONE_WORD);\n protected readonly monthNames = inject(TUI_MONTHS);\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n\n protected readonly chooseDayOrRangeTexts = inject(TUI_CHOOSE_DAY_OR_RANGE_TEXTS, {\n optional: true,\n });\n\n protected readonly years = Array.from({length: RANGE}, (_, i) => i + STARTING_YEAR);\n\n protected readonly months = Array.from(\n {length: RANGE * 12},\n (_, i) =>\n new TuiMonth(\n Math.floor(i / MONTHS_IN_YEAR) + STARTING_YEAR,\n i % MONTHS_IN_YEAR,\n ),\n );\n\n /**\n * @deprecated use static DI options instead\n * ```\n * tuiCalendarSheetOptionsProvider({rangeMode: boolean})\n * ```\n * TODO(v5): delete it\n */\n public readonly single = input(!inject(TUI_CALENDAR_SHEET_OPTIONS).rangeMode);\n public readonly multi = input(false);\n public readonly min = input(TUI_FIRST_DAY);\n public readonly max = input(TUI_LAST_DAY);\n\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly cancel = output();\n public readonly confirm = output<TuiDay | TuiDayRange | readonly TuiDay[]>();\n public readonly value = model<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n\n constructor() {\n inject(TUI_VALUE_STREAM)\n .pipe(takeUntilDestroyed())\n .subscribe((value) => {\n this.value.set(value);\n });\n }\n\n public ngAfterViewInit(): void {\n this.activeYear = this.initialYear();\n this.activeMonth = this.initialMonth();\n\n // Virtual scroll has not yet rendered items even in ngAfterViewInit\n this.waitScrolledChange();\n }\n\n public setYear(year: number): void {\n if (this.activeYear === year) {\n return;\n }\n\n this.activeMonth += this.getMonthOffset(year);\n this.activeYear = year;\n this.scrollToActiveYear('smooth');\n\n timer(0, tuiZonefreeScheduler(this.ngZone))\n .pipe(tuiZonefree(this.ngZone), takeUntilDestroyed(this.destroyRef))\n .subscribe(() => this.scrollToActiveMonth());\n }\n\n protected get yearWidth(): number {\n return this.doc.documentElement.clientWidth / YEARS_IN_ROW;\n }\n\n protected onClose(): void {\n this.cancel.emit();\n }\n\n protected onConfirm(): void {\n const value = this.value();\n\n if (value) {\n this.confirm.emit(value);\n } else {\n this.cancel.emit();\n }\n }\n\n protected onDayClick(day: TuiDay): void {\n const value = this.value();\n\n if (this.single()) {\n this.value.set(day);\n } else if (this.isMultiValue(value)) {\n this.value.set(toggleDay(value, day));\n } else if (value instanceof TuiDay) {\n this.value.set(TuiDayRange.sort(value, day));\n } else if (value instanceof TuiDayRange) {\n this.value.set(day);\n } else if (!value) {\n this.value.set(day);\n }\n }\n\n protected getState(index: number): 'active' | 'adjacent' | null {\n if (this.isYearActive(index)) {\n return 'active';\n }\n\n if (this.isYearActive(index - 1) || this.isYearActive(index + 1)) {\n return 'adjacent';\n }\n\n return null;\n }\n\n protected onMonthChange(month: number): void {\n // Skipping initial callback where index === 0\n if (!month || this.activeMonth === month) {\n return;\n }\n\n this.activeMonth = month;\n\n const activeYear = this.monthToYear(month);\n\n if (activeYear === this.activeYear) {\n return;\n }\n\n this.activeYear = activeYear;\n this.scrollToActiveYear();\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) ||\n (max !== null && item.dayAfter(max)) ||\n disabledItemHandler(item);\n\n private isMultiValue(day: unknown): day is readonly TuiDay[] | undefined {\n return !(day instanceof TuiDay) && !(day instanceof TuiDayRange) && this.multi();\n }\n\n private updateViewportDimension(): void {\n this.yearsScroll()?.checkViewportSize();\n this.monthsScroll()?.checkViewportSize();\n }\n\n private lateInit(): MonoTypeOperatorFunction<number> {\n return this.getYearsViewportSize() > 0 ? identity : delay(200);\n }\n\n private waitScrolledChange(): void {\n this.updateViewportDimension();\n\n this.monthsScroll()\n ?.scrolledIndexChange.pipe(\n delay(tuiGetDuration(this.speed)),\n this.lateInit(),\n take(1),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => {\n this.initialized = true;\n this.updateViewportDimension();\n this.initYearScroll();\n this.initMonthScroll();\n this.scrollToActiveYear();\n this.scrollToActiveMonth();\n });\n }\n\n private initYearScroll(): void {\n const yearsScroll = this.yearsScroll();\n\n if (!yearsScroll) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n yearsScroll.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n yearsScroll.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n const click$ = tuiTypedFromEvent(yearsScroll.elementRef.nativeElement, 'click');\n\n // Refresh activeYear\n yearsScroll\n .elementScrolled()\n .pipe(\n // Ignore smooth scroll resulting from click on the exact year\n windowToggle(touchstart$, () => click$),\n mergeMap((x) => x),\n // Delay is required to run months scroll in the next frame to prevent flicker\n delay(0),\n map(\n () =>\n Math.round(yearsScroll.measureScrollOffset() / this.yearWidth) +\n Math.floor(YEARS_IN_ROW / 2) +\n STARTING_YEAR,\n ),\n filter((activeYear) => activeYear !== this.activeYear),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe((activeYear) => {\n this.activeMonth += this.getMonthOffset(activeYear);\n this.activeYear = activeYear;\n this.scrollToActiveMonth();\n });\n\n // Smooth scroll to activeYear after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n yearsScroll.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME, tuiZonefreeScheduler(this.ngZone)),\n ).pipe(\n debounceTime(\n SCROLL_DEBOUNCE_TIME * 2,\n tuiZonefreeScheduler(this.ngZone),\n ),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveYear('smooth'));\n }\n\n private initMonthScroll(): void {\n const monthsScroll = this.monthsScroll();\n\n if (!monthsScroll) {\n return;\n }\n\n const touchstart$ = tuiTypedFromEvent(\n monthsScroll.elementRef.nativeElement,\n 'touchstart',\n {passive: true},\n );\n const touchend$ = tuiTypedFromEvent(\n monthsScroll.elementRef.nativeElement,\n 'touchend',\n {passive: true},\n );\n\n // Smooth scroll to the closest month after scrolling is done\n touchstart$\n .pipe(\n switchMap(() => touchend$),\n switchMap(() =>\n race(\n monthsScroll.elementScrolled(),\n timer(SCROLL_DEBOUNCE_TIME, tuiZonefreeScheduler(this.ngZone)),\n ).pipe(\n debounceTime(\n SCROLL_DEBOUNCE_TIME * 2,\n tuiZonefreeScheduler(this.ngZone),\n ),\n take(1),\n takeUntil(touchstart$),\n ),\n ),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe(() => this.scrollToActiveMonth('smooth'));\n }\n\n private scrollToActiveYear(behavior: ScrollBehavior = 'auto'): void {\n this.yearsScroll()?.scrollToIndex(\n Math.max(this.activeYear - STARTING_YEAR - 2, 0),\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private scrollToActiveMonth(behavior: ScrollBehavior = 'auto'): void {\n this.monthsScroll()?.scrollToIndex(\n this.activeMonth,\n this.isE2E ? 'auto' : behavior,\n );\n }\n\n private isYearActive(index: number): boolean {\n return index === this.activeYear;\n }\n\n private monthToYear(month: number): number {\n return Math.ceil((month + 1) / MONTHS_IN_YEAR) + STARTING_YEAR - 1;\n }\n\n private getMonthOffset(year: number): number {\n return (year - this.activeYear) * MONTHS_IN_YEAR;\n }\n}\n\nfunction toggleDay(days: readonly TuiDay[] | null, day: TuiDay): readonly TuiDay[] {\n return (\n (days?.find((item) => item.daySame(day))\n ? days.filter((item) => !item.daySame(day))\n : days?.concat(day)) || []\n );\n}\n","@if (chooseDayOrRangeTexts?.(); as texts) {\n <header class=\"t-header\">\n <button\n appearance=\"\"\n automation-id=\"tui-mobile-calendar__cancel\"\n tuiIconButton\n tuiRipple\n type=\"button\"\n class=\"t-close\"\n [iconStart]=\"icons.close\"\n [style.border-radius.%]=\"100\"\n (click)=\"onClose()\"\n >\n {{ closeWord() }}\n </button>\n <button\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link t-link_close\"\n (click)=\"onClose()\"\n >\n {{ cancelWord() }}\n </button>\n <h2\n automation-id=\"tui-mobile-calendar__label\"\n class=\"t-label\"\n >\n {{ single() ? texts[0] : multi() ? texts[2] : texts[1] }}\n </h2>\n <button\n automation-id=\"tui-mobile-calendar__confirm\"\n tuiLink\n tuiTouchable=\"opacity\"\n type=\"button\"\n class=\"t-link\"\n (click)=\"onConfirm()\"\n >\n {{ doneWord() }}\n </button>\n </header>\n}\n<cdk-virtual-scroll-viewport\n #yearsScroll\n orientation=\"horizontal\"\n class=\"t-years\"\n [itemSize]=\"yearWidth\"\n>\n <div class=\"t-years-wrapper\">\n <button\n *cdkVirtualFor=\"let index of years\"\n type=\"button\"\n class=\"t-year\"\n [attr.data-state]=\"getState(index)\"\n (click)=\"setYear(index)\"\n >\n {{ index }}\n </button>\n </div>\n</cdk-virtual-scroll-viewport>\n<div class=\"t-week\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div class=\"t-day\">\n {{ day }}\n </div>\n }\n</div>\n<cdk-virtual-scroll-viewport\n #monthsScroll\n itemSize=\"354\"\n maxBufferPx=\"5000\"\n minBufferPx=\"0\"\n class=\"t-months\"\n (scrolledIndexChange)=\"onMonthChange($event)\"\n>\n <section\n *cdkVirtualFor=\"let month of months; templateCacheSize: 10\"\n class=\"t-month-wrapper\"\n >\n <h2 class=\"t-month\">{{ monthNames()[month.month] }}</h2>\n <tui-mobile-calendar-sheet\n class=\"t-calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [month]=\"month\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n />\n </section>\n</cdk-virtual-scroll-viewport>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -113,13 +113,13 @@ class TuiMobileLoaderAndroid {
113
113
  return `rotate(${rotateX} 0 0)`;
114
114
  }
115
115
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMobileLoaderAndroid, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
116
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiMobileLoaderAndroid, isStandalone: true, selector: "tui-mobile-android-loader", host: { properties: { "class._visible": "percent", "class._dropped": "dropped", "style.transform": "hostTransform" } }, ngImport: i0, template: "<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;z-index:1;display:block;inset-block-start:0;block-size:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{position:absolute;display:flex;inset-block-start:-2.5rem;inset-inline-start:50%;box-shadow:var(--tui-shadow-medium);block-size:2.25rem;inline-size:2.25rem;background-color:var(--tui-background-neutral-1);border-radius:6.25rem;align-items:center;justify-content:center;margin-inline-start:-1.125rem}.t-loader{color:var(--tui-text-primary)}\n"], dependencies: [{ kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
116
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiMobileLoaderAndroid, isStandalone: true, selector: "tui-mobile-android-loader", host: { properties: { "class._dropped": "dropped", "class._visible": "percent", "style.transform": "hostTransform" } }, ngImport: i0, template: "<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;z-index:1;display:block;inset-block-start:0;block-size:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{position:absolute;display:flex;inset-block-start:-2.5rem;inset-inline-start:50%;box-shadow:var(--tui-shadow-medium);block-size:2.25rem;inline-size:2.25rem;background-color:var(--tui-background-neutral-1);border-radius:6.25rem;align-items:center;justify-content:center;margin-inline-start:-1.125rem}.t-loader{color:var(--tui-text-primary)}\n"], dependencies: [{ kind: "component", type: TuiLoader, selector: "tui-loader", inputs: ["size", "inheritColor", "overlay", "textContent", "loading"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
117
117
  }
118
118
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiMobileLoaderAndroid, decorators: [{
119
119
  type: Component,
120
120
  args: [{ selector: 'tui-mobile-android-loader', imports: [TuiLoader], changeDetection: ChangeDetectionStrategy.OnPush, host: {
121
- '[class._visible]': 'percent',
122
121
  '[class._dropped]': 'dropped',
122
+ '[class._visible]': 'percent',
123
123
  '[style.transform]': 'hostTransform',
124
124
  }, template: "<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n", styles: [":host{transition-property:opacity;transition-duration:var(--tui-duration, .3s);transition-timing-function:ease-in-out;position:sticky;z-index:1;display:block;inset-block-start:0;block-size:0;opacity:0}:host._visible{opacity:1}:host._dropped{transition:transform var(--tui-duration) cubic-bezier(.4,0,.2,1),opacity var(--tui-duration) var(--tui-duration)}.t-wrapper{position:absolute;display:flex;inset-block-start:-2.5rem;inset-inline-start:50%;box-shadow:var(--tui-shadow-medium);block-size:2.25rem;inline-size:2.25rem;background-color:var(--tui-background-neutral-1);border-radius:6.25rem;align-items:center;justify-content:center;margin-inline-start:-1.125rem}.t-loader{color:var(--tui-text-primary)}\n"] }]
125
125
  }] });
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.mjs","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrl: './loader-ios.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOS {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected readonly steps = 12;\n\n protected get finished(): boolean {\n return this.percent >= 100;\n }\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n protected calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n protected calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOS);\n","<svg\n height=\"36\"\n preserveAspectRatio=\"xMidYMid\"\n viewBox=\"0 0 100 100\"\n width=\"36\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n @for (_ of '-'.repeat(steps); track $index) {\n @if (isShown($index)) {\n <g [attr.transform]=\"calculateTransform($index)\">\n <rect\n fill=\"#c7c9cc\"\n height=\"16\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n x=\"47\"\n y=\"22\"\n >\n @if (finished) {\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n keyTimes=\"0;1\"\n repeatCount=\"indefinite\"\n values=\"1;0\"\n [attr.begin]=\"calculateAnimationBegin($index)\"\n />\n }\n </rect>\n </g>\n }\n }\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_LOADED' : '',\n {factory: () => EMPTY},\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_THRESHOLD' : '',\n {factory: () => 50},\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContext<number>>\n>(ngDevMode ? 'TUI_PULL_TO_REFRESH_COMPONENT' : '', {\n factory: () => (inject(WA_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n","import {type ElementRef, inject, Injectable} from '@angular/core';\nimport {\n tuiScrollFrom,\n tuiTypedFromEvent,\n tuiZonefreeScheduler,\n tuiZoneOptimized,\n} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n endWith,\n filter,\n map,\n Observable,\n scan,\n share,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\nconst EXCLUSION_SELECTORS =\n 'tui-dialog, tui-sheet-dialog, tui-dropdown, tui-dropdown-mobile';\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n private readonly el = tuiInjectElement();\n private readonly scrollRef: ElementRef<HTMLElement> = inject(TUI_SCROLL_REF);\n private readonly loaded$ = inject(TUI_PULL_TO_REFRESH_LOADED);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n // Hack for iOS to determine if pulling stopped due to scroll\n // because Safari does not support `touch-action: pan-down`\n private touched = false;\n\n private readonly pulling$ = inject(TUI_PULL_TO_REFRESH_COMPONENT)\n ? this.loaded$.pipe(\n startWith(null),\n switchMap(() =>\n tuiTypedFromEvent(this.el, 'touchstart', {passive: true}).pipe(\n filter(\n () =>\n !this.scrollRef.nativeElement.scrollTop &&\n !this.el.querySelector(EXCLUSION_SELECTORS),\n ),\n map(({touches}) => touches[0]?.clientY ?? 0),\n switchMap((start) =>\n tuiTypedFromEvent(this.el, 'touchmove').pipe(\n tap((): void => {\n this.touched = true;\n }),\n map(({touches}) => (touches[0]?.clientY ?? 0) - start),\n filter((distance) => distance > 0),\n takeUntil(\n tuiTypedFromEvent(this.el, 'touchend').pipe(\n tap((): void => {\n this.touched = false;\n }),\n ),\n ),\n takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)),\n endWith(0),\n ),\n ),\n scan(\n (prev, current) =>\n !current && !this.touched && prev > this.threshold\n ? this.threshold\n : current + current * MICRO_OFFSET,\n 0,\n ),\n takeWhile((distance) => distance !== this.threshold, true),\n startWith(0),\n ),\n ),\n debounceTime(0, tuiZonefreeScheduler()),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n )\n : EMPTY;\n\n constructor() {\n super((subscriber) => this.pulling$.subscribe(subscriber));\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n imports: [TuiLoader],\n templateUrl: './loader-android.template.html',\n styleUrl: './loader-android.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._visible]': 'percent',\n '[class._dropped]': 'dropped',\n '[style.transform]': 'hostTransform',\n },\n})\nexport class TuiMobileLoaderAndroid {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n protected get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n\n protected get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n protected get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(TuiMobileLoaderAndroid);\n","<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiScrollFrom, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {distinctUntilChanged, filter, map, startWith} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n imports: [PolymorpheusOutlet],\n templateUrl: './pull-to-refresh.template.html',\n styleUrl: './pull-to-refresh.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService],\n})\nexport class TuiPullToRefresh {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n private readonly service = inject(TuiPullToRefreshService);\n private readonly el = inject(TUI_SCROLL_REF).nativeElement;\n\n protected readonly pulling = toSignal(this.service, {initialValue: 0});\n protected readonly component = inject<PolymorpheusContent<TuiContext<number>>>(\n TUI_PULL_TO_REFRESH_COMPONENT,\n );\n\n protected readonly style = computed(() => this.styleHandler()(this.pulling()));\n protected readonly dropped = toSignal(\n this.service.pipe(\n map((distance) => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n ),\n );\n\n public readonly styleHandler = input<\n TuiHandler<number, Record<string, unknown> | null>\n >(this.isIOS ? (distance) => ({top: tuiPx(distance / 2)}) : () => null);\n\n public readonly pulled = outputFromObservable(\n this.service.pipe(filter((distance) => distance === this.threshold)),\n );\n\n constructor() {\n if (this.component) {\n tuiScrollFrom(this.el)\n .pipe(startWith(null), tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n this.el.style.setProperty(\n 'touch-action',\n this.el.scrollTop ? '' : 'pan-down',\n );\n });\n }\n }\n}\n","<ng-container *polymorpheusOutlet=\"component; context: {$implicit: pulling()}\" />\n\n<div\n [class.t-drop]=\"dropped()\"\n [style.position]=\"'relative'\"\n [style]=\"style()\"\n>\n <ng-content />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-pull-to-refresh.mjs","sources":["../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-ios/loader-ios.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.providers.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.service.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/loader-android/loader-android.template.html","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.component.ts","../../../projects/addon-mobile/components/pull-to-refresh/pull-to-refresh.template.html","../../../projects/addon-mobile/components/pull-to-refresh/taiga-ui-addon-mobile-components-pull-to-refresh.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\n\nconst LOADED_STEP = 8;\nconst ROTATE_X_STEP = 30;\n\n@Component({\n selector: 'tui-mobile-ios-loader',\n templateUrl: './loader-ios.template.html',\n styleUrl: './loader-ios.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiMobileLoaderIOS {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n protected readonly steps = 12;\n\n protected get finished(): boolean {\n return this.percent >= 100;\n }\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected isShown(index: number): boolean {\n return this.percent > (index + 1) * LOADED_STEP;\n }\n\n protected calculateTransform(index: number): string {\n return `rotate(${index * ROTATE_X_STEP} 50 50)`;\n }\n\n protected calculateAnimationBegin(index: number): string {\n return `${(index * LOADED_STEP) / 100}s`;\n }\n}\n\nexport const TUI_IOS_LOADER = new PolymorpheusComponent(TuiMobileLoaderIOS);\n","<svg\n height=\"36\"\n preserveAspectRatio=\"xMidYMid\"\n viewBox=\"0 0 100 100\"\n width=\"36\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n xmlns=\"http://www.w3.org/2000/svg\"\n>\n @for (_ of '-'.repeat(steps); track $index) {\n @if (isShown($index)) {\n <g [attr.transform]=\"calculateTransform($index)\">\n <rect\n fill=\"#c7c9cc\"\n height=\"16\"\n rx=\"7.05\"\n ry=\"3.3\"\n width=\"6\"\n x=\"47\"\n y=\"22\"\n >\n @if (finished) {\n <animate\n attributeName=\"opacity\"\n dur=\"1s\"\n keyTimes=\"0;1\"\n repeatCount=\"indefinite\"\n values=\"1;0\"\n [attr.begin]=\"calculateAnimationBegin($index)\"\n />\n }\n </rect>\n </g>\n }\n }\n</svg>\n","import {inject, InjectionToken} from '@angular/core';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {type PolymorpheusContent} from '@taiga-ui/polymorpheus';\nimport {EMPTY, type Observable} from 'rxjs';\n\nimport {TUI_ANDROID_LOADER} from './loader-android/loader-android.component';\nimport {TUI_IOS_LOADER} from './loader-ios/loader-ios.component';\n\n/**\n * Stream that emits when loading is over\n */\nexport const TUI_PULL_TO_REFRESH_LOADED = new InjectionToken<Observable<unknown>>(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_LOADED' : '',\n {factory: () => EMPTY},\n);\n\n/**\n * Pull threshold in pixels until loading starts\n */\nexport const TUI_PULL_TO_REFRESH_THRESHOLD = new InjectionToken(\n ngDevMode ? 'TUI_PULL_TO_REFRESH_THRESHOLD' : '',\n {factory: () => 50},\n);\n\n/**\n * Loading indicator component that gets current pull distance in pixels as context\n */\nexport const TUI_PULL_TO_REFRESH_COMPONENT = new InjectionToken<\n PolymorpheusContent<TuiContext<number>>\n>(ngDevMode ? 'TUI_PULL_TO_REFRESH_COMPONENT' : '', {\n factory: () => (inject(WA_IS_IOS) ? TUI_IOS_LOADER : TUI_ANDROID_LOADER),\n});\n","import {type ElementRef, inject, Injectable} from '@angular/core';\nimport {\n tuiScrollFrom,\n tuiTypedFromEvent,\n tuiZonefreeScheduler,\n tuiZoneOptimized,\n} from '@taiga-ui/cdk/observables';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {\n debounceTime,\n distinctUntilChanged,\n EMPTY,\n endWith,\n filter,\n map,\n Observable,\n scan,\n share,\n startWith,\n switchMap,\n takeUntil,\n takeWhile,\n tap,\n} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_LOADED,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\n\nexport const MICRO_OFFSET = 10 ** -6;\nconst EXCLUSION_SELECTORS =\n 'tui-dialog, tui-sheet-dialog, tui-dropdown, tui-dropdown-mobile';\n\n@Injectable()\nexport class TuiPullToRefreshService extends Observable<number> {\n private readonly el = tuiInjectElement();\n private readonly scrollRef: ElementRef<HTMLElement> = inject(TUI_SCROLL_REF);\n private readonly loaded$ = inject(TUI_PULL_TO_REFRESH_LOADED);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n // Hack for iOS to determine if pulling stopped due to scroll\n // because Safari does not support `touch-action: pan-down`\n private touched = false;\n\n private readonly pulling$ = inject(TUI_PULL_TO_REFRESH_COMPONENT)\n ? this.loaded$.pipe(\n startWith(null),\n switchMap(() =>\n tuiTypedFromEvent(this.el, 'touchstart', {passive: true}).pipe(\n filter(\n () =>\n !this.scrollRef.nativeElement.scrollTop &&\n !this.el.querySelector(EXCLUSION_SELECTORS),\n ),\n map(({touches}) => touches[0]?.clientY ?? 0),\n switchMap((start) =>\n tuiTypedFromEvent(this.el, 'touchmove').pipe(\n tap((): void => {\n this.touched = true;\n }),\n map(({touches}) => (touches[0]?.clientY ?? 0) - start),\n filter((distance) => distance > 0),\n takeUntil(\n tuiTypedFromEvent(this.el, 'touchend').pipe(\n tap((): void => {\n this.touched = false;\n }),\n ),\n ),\n takeUntil(tuiScrollFrom(this.scrollRef.nativeElement)),\n endWith(0),\n ),\n ),\n scan(\n (prev, current) =>\n !current && !this.touched && prev > this.threshold\n ? this.threshold\n : current + current * MICRO_OFFSET,\n 0,\n ),\n takeWhile((distance) => distance !== this.threshold, true),\n startWith(0),\n ),\n ),\n debounceTime(0, tuiZonefreeScheduler()),\n distinctUntilChanged(),\n tuiZoneOptimized(),\n share(),\n )\n : EMPTY;\n\n constructor() {\n super((subscriber) => this.pulling$.subscribe(subscriber));\n }\n}\n","import {ChangeDetectionStrategy, Component, inject} from '@angular/core';\nimport {type TuiContext} from '@taiga-ui/cdk/types';\nimport {TuiLoader} from '@taiga-ui/core/components/loader';\nimport {injectContext, PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TUI_PULL_TO_REFRESH_THRESHOLD} from '../pull-to-refresh.providers';\nimport {MICRO_OFFSET} from '../pull-to-refresh.service';\n\nconst ROTATE_X_DEFAULT = 180;\nconst ROTATE_X_MAX = 500;\nconst ROTATE_X_MULTIPLIER = 2.3;\n\n@Component({\n selector: 'tui-mobile-android-loader',\n imports: [TuiLoader],\n templateUrl: './loader-android.template.html',\n styleUrl: './loader-android.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class._dropped]': 'dropped',\n '[class._visible]': 'percent',\n '[style.transform]': 'hostTransform',\n },\n})\nexport class TuiMobileLoaderAndroid {\n private readonly context = injectContext<TuiContext<number>>();\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n\n protected get percent(): number {\n return (this.context.$implicit * 100) / this.threshold;\n }\n\n protected get dropped(): boolean {\n return (\n this.context.$implicit <= MICRO_OFFSET ||\n this.context.$implicit === this.threshold\n );\n }\n\n protected get hostTransform(): string {\n return `translateY(${Math.min(this.context.$implicit, this.threshold * 1.5)}px)`;\n }\n\n protected get opacity(): number {\n return this.context.$implicit / (this.threshold * 1.5);\n }\n\n protected get transform(): string {\n const rotateX = Math.min(\n ROTATE_X_DEFAULT + this.percent * ROTATE_X_MULTIPLIER,\n ROTATE_X_MAX,\n );\n\n return `rotate(${rotateX} 0 0)`;\n }\n}\n\nexport const TUI_ANDROID_LOADER = new PolymorpheusComponent(TuiMobileLoaderAndroid);\n","<div class=\"t-wrapper\">\n @if (percent !== 100) {\n <svg\n fill=\"none\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n width=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n [attr.transform]=\"transform\"\n [style.opacity]=\"opacity\"\n >\n <defs>\n <mask id=\"mask-1\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"white\"\n fill-rule=\"evenodd\"\n />\n </mask>\n </defs>\n <g mask=\"url(#mask-1)\">\n <path\n clip-rule=\"evenodd\"\n d=\"M21 12C21 7.03 16.97 3 12 3C7.03 3 3 7.03 3 12C3 16.97 7.03 21 12 21C14.06 21 15.96 20.3 17.48 19.14L16.06 17.7C14.91 18.51 13.51 19 12 19C8.13 19 5 15.87 5 12C5 8.13 8.13 5 12 5C15.87 5 19 8.13 19 12H16L20 16L24 12H21Z\"\n fill=\"black\"\n fill-rule=\"evenodd\"\n />\n </g>\n </svg>\n } @else {\n <tui-loader\n size=\"s\"\n class=\"t-loader\"\n [inheritColor]=\"true\"\n />\n }\n</div>\n","import {ChangeDetectionStrategy, Component, computed, inject, input} from '@angular/core';\nimport {\n outputFromObservable,\n takeUntilDestroyed,\n toSignal,\n} from '@angular/core/rxjs-interop';\nimport {WA_IS_IOS} from '@ng-web-apis/platform';\nimport {tuiScrollFrom, tuiZonefree} from '@taiga-ui/cdk/observables';\nimport {type TuiContext, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {type PolymorpheusContent, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {distinctUntilChanged, filter, map, startWith} from 'rxjs';\n\nimport {\n TUI_PULL_TO_REFRESH_COMPONENT,\n TUI_PULL_TO_REFRESH_THRESHOLD,\n} from './pull-to-refresh.providers';\nimport {MICRO_OFFSET, TuiPullToRefreshService} from './pull-to-refresh.service';\n\n@Component({\n selector: 'tui-pull-to-refresh',\n imports: [PolymorpheusOutlet],\n templateUrl: './pull-to-refresh.template.html',\n styleUrl: './pull-to-refresh.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [TuiPullToRefreshService],\n})\nexport class TuiPullToRefresh {\n private readonly isIOS = inject(WA_IS_IOS);\n private readonly threshold = inject(TUI_PULL_TO_REFRESH_THRESHOLD);\n private readonly service = inject(TuiPullToRefreshService);\n private readonly el = inject(TUI_SCROLL_REF).nativeElement;\n protected readonly pulling = toSignal(this.service, {initialValue: 0});\n\n protected readonly component = inject<PolymorpheusContent<TuiContext<number>>>(\n TUI_PULL_TO_REFRESH_COMPONENT,\n );\n\n protected readonly style = computed(() => this.styleHandler()(this.pulling()));\n\n protected readonly dropped = toSignal(\n this.service.pipe(\n map((distance) => distance <= MICRO_OFFSET || distance === this.threshold),\n distinctUntilChanged(),\n ),\n );\n\n public readonly styleHandler = input<\n TuiHandler<number, Record<string, unknown> | null>\n >(this.isIOS ? (distance) => ({top: tuiPx(distance / 2)}) : () => null);\n\n public readonly pulled = outputFromObservable(\n this.service.pipe(filter((distance) => distance === this.threshold)),\n );\n\n constructor() {\n if (this.component) {\n tuiScrollFrom(this.el)\n .pipe(startWith(null), tuiZonefree(), takeUntilDestroyed())\n .subscribe(() => {\n this.el.style.setProperty(\n 'touch-action',\n this.el.scrollTop ? '' : 'pan-down',\n );\n });\n }\n }\n}\n","<ng-container *polymorpheusOutlet=\"component; context: {$implicit: pulling()}\" />\n\n<div\n [class.t-drop]=\"dropped()\"\n [style.position]=\"'relative'\"\n [style]=\"style()\"\n>\n <ng-content />\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -62,20 +62,20 @@ class TuiSheetDialogComponent {
62
62
  }
63
63
  }
64
64
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiSheetDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
65
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiSheetDialogComponent, isStandalone: true, selector: "tui-sheet-dialog", host: { listeners: { "document:touchstart.passive.zoneless": "onPointerChange(1)", "document:touchend.zoneless": "onPointerChange(-1)", "document:touchcancel.zoneless": "onPointerChange(-1)", "scroll.zoneless": "onPointerChange(0)", "click.self": "close$.next()" }, properties: { "attr.data-appearance": "context.appearance", "style.--tui-offset.px": "context.offset", "class._bar": "context.bar", "class._closeable": "context.closable" } }, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], viewQueries: [{ propertyName: "stops", predicate: ["stops"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.TuiAnimated }], ngImport: i0, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;--t-top: 0}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
65
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: TuiSheetDialogComponent, isStandalone: true, selector: "tui-sheet-dialog", host: { listeners: { "click.self": "close$.next()", "document:touchcancel.zoneless": "onPointerChange(-1)", "document:touchend.zoneless": "onPointerChange(-1)", "document:touchstart.passive.zoneless": "onPointerChange(1)", "scroll.zoneless": "onPointerChange(0)" }, properties: { "attr.data-appearance": "context.appearance", "class._bar": "context.bar", "class._closeable": "context.closable", "style.--tui-offset.px": "context.offset" } }, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], viewQueries: [{ propertyName: "stops", predicate: ["stops"], descendants: true, read: ElementRef, isSignal: true }], hostDirectives: [{ directive: i1.TuiAnimated }], ngImport: i0, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;--t-top: 0}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }, { kind: "directive", type: TuiButton, selector: "a[tuiButton],button[tuiButton],a[tuiIconButton],button[tuiIconButton]", inputs: ["size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
66
66
  }
67
67
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiSheetDialogComponent, decorators: [{
68
68
  type: Component,
69
69
  args: [{ selector: 'tui-sheet-dialog', imports: [PolymorpheusOutlet, TuiButton], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)], hostDirectives: [TuiAnimated], host: {
70
70
  '[attr.data-appearance]': 'context.appearance',
71
- '[style.--tui-offset.px]': 'context.offset',
72
71
  '[class._bar]': 'context.bar',
73
72
  '[class._closeable]': 'context.closable',
74
- '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',
75
- '(document:touchend.zoneless)': 'onPointerChange(-1)',
73
+ '[style.--tui-offset.px]': 'context.offset',
74
+ '(click.self)': 'close$.next()',
76
75
  '(document:touchcancel.zoneless)': 'onPointerChange(-1)',
76
+ '(document:touchend.zoneless)': 'onPointerChange(-1)',
77
+ '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',
77
78
  '(scroll.zoneless)': 'onPointerChange(0)',
78
- '(click.self)': 'close$.next()',
79
79
  }, template: "<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n", styles: [":host{scrollbar-width:none;-ms-overflow-style:none;position:sticky;display:flex;inset-inline-start:0;inline-size:100%;max-inline-size:40rem;block-size:calc(100% - max(var(--tui-offset),env(safe-area-inset-top)));flex-direction:column;font:var(--tui-typography-body-m);overflow-y:scroll;overscroll-behavior:none;scroll-snap-type:y mandatory;margin:max(var(--tui-offset),env(safe-area-inset-top)) auto 0;border-radius:.75rem .75rem 0 0;--t-top: 0}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}@supports (-webkit-touch-callout: none){:host{overscroll-behavior:contain}}:host.tui-enter,:host.tui-leave{animation-name:tuiSlide}:host:before{position:fixed;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;content:\"\";z-index:-1}:host._bar{--t-top: 1.5rem}:host._bar .t-bar{display:block}:host._closeable{display:block}:host._closeable .t-stops{display:flex}:host[data-appearance~=fullscreen]{display:block}:host[data-appearance~=fullscreen] .t-sheet{min-block-size:100%}:host ::ng-deep tui-data-list[data-size]{padding:0}:host ::ng-deep tui-data-list[data-size] [tuiOption][data-size]{margin-inline:-.5rem;padding-inline:.5rem}.t-stops{display:none;block-size:100%;scroll-snap-stop:always;scroll-snap-align:start;pointer-events:none}.t-stop{position:relative;inset-block-start:env(safe-area-inset-bottom);scroll-snap-stop:normal;scroll-snap-align:start;block-size:1rem;inline-size:1rem}.t-sheet{display:flex;inline-size:100%;flex-direction:column;box-shadow:var(--tui-shadow-small);border-radius:inherit;padding:0 1rem;margin-block-start:auto;background:var(--tui-background-elevation-1);box-sizing:border-box;scroll-snap-stop:always;scroll-snap-align:start}.t-bar{position:sticky;z-index:1;display:none;inset-block-start:0;block-size:1.5rem;margin:0 -1rem;border-radius:inherit;background:var(--tui-background-elevation-1)}.t-bar:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";inset-block-start:.5rem;inline-size:2rem;block-size:.25rem;background:var(--tui-border-normal);border-radius:1rem}.t-content{position:relative;display:flex;flex-direction:column;flex-grow:1;border-radius:inherit;isolation:isolate;padding-block-end:max(1.5rem,env(safe-area-inset-bottom))}.t-content:after{content:\"\";position:relative;z-index:-1;display:block;inset-block-start:max(1.5rem,env(safe-area-inset-bottom));scroll-snap-stop:always;scroll-snap-align:end;border-image:conic-gradient(var(--tui-background-elevation-1) 0 0) fill 0/0/0 100vh 100vh}* ::ng-deep>header,* ::ng-deep>[tuiSlides]>*>header,* ::ng-deep>ng-component>header,* ::ng-deep>ng-component>[tuiSlides]>*>header{position:sticky;z-index:1;inset-block-start:var(--t-top);margin:0 -1rem;padding:.75rem 1rem;border-radius:inherit;background:var(--tui-background-elevation-1);font:var(--tui-typography-heading-h6)}* ::ng-deep>footer:not([tuiFloatingContainer]),* ::ng-deep>[tuiSlides]>*>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>footer:not([tuiFloatingContainer]),* ::ng-deep>ng-component>[tuiSlides]>*>footer:not([tuiFloatingContainer]){display:flex;flex-direction:column-reverse;gap:.5rem;margin-block-start:1rem}\n"] }]
80
80
  }] });
81
81
 
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-sheet-dialog.mjs","sources":["../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.component.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.template.html","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.options.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.service.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.directive.ts","../../../projects/addon-mobile/components/sheet-dialog/taiga-ui-addon-mobile-components-sheet-dialog.ts"],"sourcesContent":["import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n viewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiCloseWatcher, tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_DIALOGS_CLOSE} from '@taiga-ui/core/portals/dialog';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {exhaustMap, filter, isObservable, map, merge, of, Subject, take} from 'rxjs';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\n\nconst REQUIRED_ERROR = new Error(ngDevMode ? 'Required dialog was dismissed' : '');\n\n@Component({\n selector: 'tui-sheet-dialog',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './sheet-dialog.template.html',\n styleUrl: './sheet-dialog.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)],\n hostDirectives: [TuiAnimated],\n host: {\n '[attr.data-appearance]': 'context.appearance',\n '[style.--tui-offset.px]': 'context.offset',\n '[class._bar]': 'context.bar',\n '[class._closeable]': 'context.closable',\n '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',\n '(document:touchend.zoneless)': 'onPointerChange(-1)',\n '(document:touchcancel.zoneless)': 'onPointerChange(-1)',\n '(scroll.zoneless)': 'onPointerChange(0)',\n '(click.self)': 'close$.next()',\n },\n})\nexport class TuiSheetDialogComponent<I> implements AfterViewInit {\n private readonly stops = viewChildren('stops', {read: ElementRef});\n private readonly el = tuiInjectElement();\n private pointers = 0;\n\n protected readonly context =\n injectContext<TuiPortalContext<TuiSheetDialogOptions<I>, any>>();\n\n protected readonly close$ = new Subject<void>();\n protected readonly $ = merge(\n this.close$,\n tuiCloseWatcher(),\n inject(TUI_DIALOGS_CLOSE).pipe(map(TUI_TRUE_HANDLER)),\n )\n .pipe(\n tuiZonefull(),\n exhaustMap(() => {\n if (isObservable(this.context.closable)) {\n if (this.el.scrollTop <= 0) {\n this.el.scrollTo({top: this.initial, behavior: 'smooth'});\n }\n\n return this.context.closable.pipe(take(1));\n }\n\n return of(this.context.closable);\n }),\n filter(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.close());\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.initial || 0;\n }\n\n protected onPointerChange(delta: number): void {\n this.pointers = Math.max(this.pointers + delta, 0);\n\n if (!this.pointers && this.el.scrollTop <= 0) {\n this.close$.next();\n }\n }\n\n private get initial(): number | undefined {\n return this.context.closable\n ? this.stops()\n .map((e) => e.nativeElement.offsetTop - this.context.offset)\n .concat(this.el.clientHeight ?? Infinity)[this.context.initial]\n : 0;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n","<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nexport interface TuiSheetDialogOptions<I = undefined> {\n readonly appearance: string;\n readonly closable: Observable<boolean> | boolean;\n readonly data: I extends void ? undefined : I;\n readonly initial: number;\n readonly label: string;\n readonly offset: number;\n readonly stops: readonly string[];\n readonly bar: boolean;\n readonly required: boolean;\n}\n\nexport const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions = {\n label: '',\n appearance: '',\n stops: [],\n initial: 0,\n offset: 16,\n closable: true,\n data: undefined,\n bar: true,\n required: false,\n};\n\n/**\n * Default parameters for mobile dialog component\n */\nexport const [TUI_SHEET_DIALOG_OPTIONS, tuiSheetDialogOptionsProvider] = tuiCreateOptions(\n TUI_SHEET_DIALOG_DEFAULT_OPTIONS,\n);\n","import {inject, Injectable} from '@angular/core';\nimport {TuiThemeColorService} from '@taiga-ui/addon-mobile/services';\nimport {type TuiModalComponent, TuiModalService} from '@taiga-ui/core/portals/modal';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiSheetDialogComponent} from './sheet-dialog.component';\nimport {\n TUI_SHEET_DIALOG_OPTIONS,\n type TuiSheetDialogOptions,\n} from './sheet-dialog.options';\n\nconst THEME = '#404040';\n\n@Injectable({providedIn: 'root'})\nexport class TuiSheetDialogService extends TuiModalService<TuiSheetDialogOptions<any>> {\n private readonly theme = inject(TuiThemeColorService);\n private readonly initial = this.theme.color;\n private count = 0;\n\n protected readonly options = inject(TUI_SHEET_DIALOG_OPTIONS);\n protected readonly content = TuiSheetDialogComponent;\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<TuiSheetDialogOptions>>,\n ): () => void {\n this.count++;\n this.theme.color = THEME;\n\n const cleanup = super.add(component);\n\n return () => {\n cleanup();\n this.count--;\n\n if (!this.count) {\n this.theme.color = this.initial;\n }\n };\n }\n}\n","import {Directive, input} from '@angular/core';\nimport {tuiAsPortal, TuiPortalDirective} from '@taiga-ui/cdk/portals';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\nimport {TuiSheetDialogService} from './sheet-dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiSheetDialog]',\n providers: [tuiAsPortal(TuiSheetDialogService)],\n hostDirectives: [\n {\n directive: TuiPortalDirective,\n inputs: ['options: tuiSheetDialogOptions', 'open: tuiSheetDialog'],\n outputs: ['openChange: tuiSheetDialogChange'],\n },\n ],\n})\nexport class TuiSheetDialog {\n public readonly tuiSheetDialogOptions = input<Partial<TuiSheetDialogOptions>>({});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-sheet-dialog.mjs","sources":["../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.component.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.template.html","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.options.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.service.ts","../../../projects/addon-mobile/components/sheet-dialog/sheet-dialog.directive.ts","../../../projects/addon-mobile/components/sheet-dialog/taiga-ui-addon-mobile-components-sheet-dialog.ts"],"sourcesContent":["import {\n type AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n viewChildren,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_TRUE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiCloseWatcher, tuiZonefull} from '@taiga-ui/cdk/observables';\nimport {type TuiPortalContext} from '@taiga-ui/cdk/portals';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {TuiButton} from '@taiga-ui/core/components/button';\nimport {TUI_SCROLL_REF} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_DIALOGS_CLOSE} from '@taiga-ui/core/portals/dialog';\nimport {injectContext, PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\nimport {exhaustMap, filter, isObservable, map, merge, of, Subject, take} from 'rxjs';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\n\nconst REQUIRED_ERROR = new Error(ngDevMode ? 'Required dialog was dismissed' : '');\n\n@Component({\n selector: 'tui-sheet-dialog',\n imports: [PolymorpheusOutlet, TuiButton],\n templateUrl: './sheet-dialog.template.html',\n styleUrl: './sheet-dialog.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiProvide(TUI_SCROLL_REF, ElementRef)],\n hostDirectives: [TuiAnimated],\n host: {\n '[attr.data-appearance]': 'context.appearance',\n '[class._bar]': 'context.bar',\n '[class._closeable]': 'context.closable',\n '[style.--tui-offset.px]': 'context.offset',\n '(click.self)': 'close$.next()',\n '(document:touchcancel.zoneless)': 'onPointerChange(-1)',\n '(document:touchend.zoneless)': 'onPointerChange(-1)',\n '(document:touchstart.passive.zoneless)': 'onPointerChange(1)',\n '(scroll.zoneless)': 'onPointerChange(0)',\n },\n})\nexport class TuiSheetDialogComponent<I> implements AfterViewInit {\n private readonly stops = viewChildren('stops', {read: ElementRef});\n private readonly el = tuiInjectElement();\n private pointers = 0;\n\n protected readonly context =\n injectContext<TuiPortalContext<TuiSheetDialogOptions<I>, any>>();\n\n protected readonly close$ = new Subject<void>();\n\n protected readonly $ = merge(\n this.close$,\n tuiCloseWatcher(),\n inject(TUI_DIALOGS_CLOSE).pipe(map(TUI_TRUE_HANDLER)),\n )\n .pipe(\n tuiZonefull(),\n exhaustMap(() => {\n if (isObservable(this.context.closable)) {\n if (this.el.scrollTop <= 0) {\n this.el.scrollTo({top: this.initial, behavior: 'smooth'});\n }\n\n return this.context.closable.pipe(take(1));\n }\n\n return of(this.context.closable);\n }),\n filter(Boolean),\n takeUntilDestroyed(),\n )\n .subscribe(() => this.close());\n\n public ngAfterViewInit(): void {\n this.el.scrollTop = this.initial || 0;\n }\n\n protected onPointerChange(delta: number): void {\n this.pointers = Math.max(this.pointers + delta, 0);\n\n if (!this.pointers && this.el.scrollTop <= 0) {\n this.close$.next();\n }\n }\n\n private get initial(): number | undefined {\n return this.context.closable\n ? this.stops()\n .map((e) => e.nativeElement.offsetTop - this.context.offset)\n .concat(this.el.clientHeight ?? Infinity)[this.context.initial]\n : 0;\n }\n\n private close(): void {\n if (this.context.required) {\n this.context.$implicit.error(REQUIRED_ERROR);\n } else {\n this.context.$implicit.complete();\n }\n }\n}\n","<div class=\"t-stops\">\n @for (stop of context.stops; track stop) {\n <div\n #stops\n class=\"t-stop\"\n [style.margin-block-start]=\"stop\"\n ></div>\n }\n</div>\n<div class=\"t-sheet\">\n <div class=\"t-bar\"></div>\n <div class=\"t-content\">\n @if (context.label) {\n <header\n [id]=\"context.id\"\n [innerHTML]=\"context.label\"\n ></header>\n }\n <ng-container *polymorpheusOutlet=\"context.content as text; context: context\">\n <div [innerHTML]=\"text\"></div>\n @if (context.closable) {\n <footer>\n <button\n tuiButton\n type=\"button\"\n (click)=\"context.$implicit.complete()\"\n >\n {{ context.data || 'OK' }}\n </button>\n </footer>\n }\n </ng-container>\n </div>\n</div>\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\nimport {type Observable} from 'rxjs';\n\nexport interface TuiSheetDialogOptions<I = undefined> {\n readonly appearance: string;\n readonly closable: Observable<boolean> | boolean;\n readonly data: I extends void ? undefined : I;\n readonly initial: number;\n readonly label: string;\n readonly offset: number;\n readonly stops: readonly string[];\n readonly bar: boolean;\n readonly required: boolean;\n}\n\nexport const TUI_SHEET_DIALOG_DEFAULT_OPTIONS: TuiSheetDialogOptions = {\n label: '',\n appearance: '',\n stops: [],\n initial: 0,\n offset: 16,\n closable: true,\n data: undefined,\n bar: true,\n required: false,\n};\n\n/**\n * Default parameters for mobile dialog component\n */\nexport const [TUI_SHEET_DIALOG_OPTIONS, tuiSheetDialogOptionsProvider] = tuiCreateOptions(\n TUI_SHEET_DIALOG_DEFAULT_OPTIONS,\n);\n","import {inject, Injectable} from '@angular/core';\nimport {TuiThemeColorService} from '@taiga-ui/addon-mobile/services';\nimport {type TuiModalComponent, TuiModalService} from '@taiga-ui/core/portals/modal';\nimport {type PolymorpheusComponent} from '@taiga-ui/polymorpheus';\n\nimport {TuiSheetDialogComponent} from './sheet-dialog.component';\nimport {\n TUI_SHEET_DIALOG_OPTIONS,\n type TuiSheetDialogOptions,\n} from './sheet-dialog.options';\n\nconst THEME = '#404040';\n\n@Injectable({providedIn: 'root'})\nexport class TuiSheetDialogService extends TuiModalService<TuiSheetDialogOptions<any>> {\n private readonly theme = inject(TuiThemeColorService);\n private readonly initial = this.theme.color;\n private count = 0;\n protected readonly options = inject(TUI_SHEET_DIALOG_OPTIONS);\n protected readonly content = TuiSheetDialogComponent;\n\n protected override add(\n component: PolymorpheusComponent<TuiModalComponent<TuiSheetDialogOptions>>,\n ): () => void {\n this.count++;\n this.theme.color = THEME;\n\n const cleanup = super.add(component);\n\n return () => {\n cleanup();\n this.count--;\n\n if (!this.count) {\n this.theme.color = this.initial;\n }\n };\n }\n}\n","import {Directive, input} from '@angular/core';\nimport {tuiAsPortal, TuiPortalDirective} from '@taiga-ui/cdk/portals';\n\nimport {type TuiSheetDialogOptions} from './sheet-dialog.options';\nimport {TuiSheetDialogService} from './sheet-dialog.service';\n\n@Directive({\n selector: 'ng-template[tuiSheetDialog]',\n providers: [tuiAsPortal(TuiSheetDialogService)],\n hostDirectives: [\n {\n directive: TuiPortalDirective,\n inputs: ['options: tuiSheetDialogOptions', 'open: tuiSheetDialog'],\n outputs: ['openChange: tuiSheetDialogChange'],\n },\n ],\n})\nexport class TuiSheetDialog {\n public readonly tuiSheetDialogOptions = input<Partial<TuiSheetDialogOptions>>({});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
@@ -38,26 +38,26 @@ class TuiSwipeActionsAutoClose {
38
38
  }
39
39
  }
40
40
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiSwipeActionsAutoClose, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
41
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiSwipeActionsAutoClose, isStandalone: true, selector: "tui-swipe-actions[autoClose]", inputs: { autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:pointerdown.zoneless": "handleEvent($event)", "document:focusin.zoneless": "handleEvent($event)" } }, ngImport: i0 }); }
41
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.20", type: TuiSwipeActionsAutoClose, isStandalone: true, selector: "tui-swipe-actions[autoClose]", inputs: { autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "document:focusin.zoneless": "handleEvent($event)", "document:pointerdown.zoneless": "handleEvent($event)" } }, ngImport: i0 }); }
42
42
  }
43
43
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiSwipeActionsAutoClose, decorators: [{
44
44
  type: Directive,
45
45
  args: [{
46
46
  selector: 'tui-swipe-actions[autoClose]',
47
47
  host: {
48
- '(document:pointerdown.zoneless)': 'handleEvent($event)',
49
48
  '(document:focusin.zoneless)': 'handleEvent($event)',
49
+ '(document:pointerdown.zoneless)': 'handleEvent($event)',
50
50
  },
51
51
  }]
52
52
  }] });
53
53
 
54
54
  class Styles {
55
55
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
56
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-swipe-actions-5.3.0"], ngImport: i0, template: '', isInline: true, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.3.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.3.0\"])>*{animation:tuiOnboardingEnter var(--tui-duration-slow) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration-moderate) linear var(--tui-duration-slow),tuiOnboardingExit var(--tui-duration-slow) var(--tui-curve-expressive-entrance) calc(var(--tui-duration-slow) + var(--tui-duration-moderate))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-swipe-actions-5.4.0-canary.d26a6e2"], ngImport: i0, template: '', isInline: true, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>*{animation:tuiOnboardingEnter var(--tui-duration-slow) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration-moderate) linear var(--tui-duration-slow),tuiOnboardingExit var(--tui-duration-slow) var(--tui-curve-expressive-entrance) calc(var(--tui-duration-slow) + var(--tui-duration-moderate))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
57
57
  }
58
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, decorators: [{
59
59
  type: Component,
60
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-swipe-actions-${TUI_VERSION}`, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.3.0\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.3.0\"])>*{animation:tuiOnboardingEnter var(--tui-duration-slow) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration-moderate) linear var(--tui-duration-slow),tuiOnboardingExit var(--tui-duration-slow) var(--tui-curve-expressive-entrance) calc(var(--tui-duration-slow) + var(--tui-duration-moderate))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"] }]
60
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-swipe-actions-${TUI_VERSION}`, styles: ["tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){scroll-snap-type:none}tui-swipe-actions._onboarding:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>*{animation:tuiOnboardingEnter var(--tui-duration-slow) var(--tui-curve-expressive-entrance),tuiOnboardingShow var(--tui-duration-moderate) linear var(--tui-duration-slow),tuiOnboardingExit var(--tui-duration-slow) var(--tui-curve-expressive-entrance) calc(var(--tui-duration-slow) + var(--tui-duration-moderate))}@keyframes tuiOnboardingEnter{0%{transform:translate(0)}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingShow{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(calc(-1px * var(--t-actions-width)))}}@keyframes tuiOnboardingExit{0%{transform:translate(calc(-1px * var(--t-actions-width)))}to{transform:translate(0)}}\n"] }]
61
61
  }] });
62
62
  class TuiSwipeActionsOnboarding {
63
63
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-swipe-actions.mjs","sources":["../../../projects/addon-mobile/components/swipe-actions/swipe-actions.component.ts","../../../projects/addon-mobile/components/swipe-actions/swipe-actions.template.html","../../../projects/addon-mobile/components/swipe-actions/swipe-actions-auto-close.directive.ts","../../../projects/addon-mobile/components/swipe-actions/swipe-actions-onboarding.directive.ts","../../../projects/addon-mobile/components/swipe-actions/taiga-ui-addon-mobile-components-swipe-actions.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n signal,\n} from '@angular/core';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\n\n@Component({\n selector: 'tui-swipe-actions',\n imports: [WaResizeObserver],\n templateUrl: './swipe-actions.template.html',\n styleUrl: './swipe-actions.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--t-actions-width]': 'actionsWidth',\n '[style.overscroll-behavior-x]': 'scrolled() ? \"contain\" : \"none\"',\n '(scroll.zoneless)': 'scrolled.set($event.target.scrollLeft > 0)',\n },\n})\nexport class TuiSwipeActions {\n protected actionsWidth = 0;\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly scrolled = signal(false);\n\n protected onResize({target}: ResizeObserverEntry): void {\n this.actionsWidth = target.clientWidth;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"$event[0] && onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n","import {Directive, input} from '@angular/core';\nimport {tuiGetActualTarget, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\n@Directive({\n selector: 'tui-swipe-actions[autoClose]',\n host: {\n '(document:pointerdown.zoneless)': 'handleEvent($event)',\n '(document:focusin.zoneless)': 'handleEvent($event)',\n },\n})\nexport class TuiSwipeActionsAutoClose {\n private readonly el = tuiInjectElement();\n\n public readonly autoClose = input<boolean | string>(true);\n\n protected handleEvent(event: Event): void {\n if (this.autoClose() !== false && !this.el.contains(tuiGetActualTarget(event))) {\n this.el.scrollTo({left: 0, behavior: 'smooth'});\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './swipe-actions-onboarding.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-swipe-actions-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: 'tui-swipe-actions[onboarding]',\n host: {\n '[class._onboarding]': 'onboarding()',\n '(animationend)': 'onboarding.set($event.animationName !== \"tuiOnboardingExit\")',\n },\n})\nexport class TuiSwipeActionsOnboarding {\n public readonly onboarding = model(true);\n\n protected readonly nothing = tuiWithStyles(Styles);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-swipe-actions.mjs","sources":["../../../projects/addon-mobile/components/swipe-actions/swipe-actions.component.ts","../../../projects/addon-mobile/components/swipe-actions/swipe-actions.template.html","../../../projects/addon-mobile/components/swipe-actions/swipe-actions-auto-close.directive.ts","../../../projects/addon-mobile/components/swipe-actions/swipe-actions-onboarding.directive.ts","../../../projects/addon-mobile/components/swipe-actions/taiga-ui-addon-mobile-components-swipe-actions.ts"],"sourcesContent":["import {\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n inject,\n signal,\n} from '@angular/core';\nimport {WaResizeObserver} from '@ng-web-apis/resize-observer';\n\n@Component({\n selector: 'tui-swipe-actions',\n imports: [WaResizeObserver],\n templateUrl: './swipe-actions.template.html',\n styleUrl: './swipe-actions.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style.--t-actions-width]': 'actionsWidth',\n '[style.overscroll-behavior-x]': 'scrolled() ? \"contain\" : \"none\"',\n '(scroll.zoneless)': 'scrolled.set($event.target.scrollLeft > 0)',\n },\n})\nexport class TuiSwipeActions {\n protected actionsWidth = 0;\n protected readonly cdr = inject(ChangeDetectorRef);\n protected readonly scrolled = signal(false);\n\n protected onResize({target}: ResizeObserverEntry): void {\n this.actionsWidth = target.clientWidth;\n this.cdr.detectChanges();\n }\n}\n","<div class=\"t-content\">\n <ng-content />\n</div>\n\n<div\n class=\"t-actions\"\n (waResizeObserver)=\"$event[0] && onResize($event[0])\"\n>\n <ng-content select=\"[tuiSwipeAction]\" />\n</div>\n","import {Directive, input} from '@angular/core';\nimport {tuiGetActualTarget, tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\n\n@Directive({\n selector: 'tui-swipe-actions[autoClose]',\n host: {\n '(document:focusin.zoneless)': 'handleEvent($event)',\n '(document:pointerdown.zoneless)': 'handleEvent($event)',\n },\n})\nexport class TuiSwipeActionsAutoClose {\n private readonly el = tuiInjectElement();\n public readonly autoClose = input<boolean | string>(true);\n\n protected handleEvent(event: Event): void {\n if (this.autoClose() !== false && !this.el.contains(tuiGetActualTarget(event))) {\n this.el.scrollTo({left: 0, behavior: 'smooth'});\n }\n }\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n Directive,\n model,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './swipe-actions-onboarding.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-swipe-actions-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: 'tui-swipe-actions[onboarding]',\n host: {\n '[class._onboarding]': 'onboarding()',\n '(animationend)': 'onboarding.set($event.animationName !== \"tuiOnboardingExit\")',\n },\n})\nexport class TuiSwipeActionsOnboarding {\n public readonly onboarding = model(true);\n protected readonly nothing = tuiWithStyles(Styles);\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-components-tab-bar.mjs","sources":["../../../projects/addon-mobile/components/tab-bar/tab-bar-item.component.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar-item.template.html","../../../projects/addon-mobile/components/tab-bar/tab-bar.component.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar.template.html","../../../projects/addon-mobile/components/tab-bar/tab-bar-item.directive.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar.ts","../../../projects/addon-mobile/components/tab-bar/taiga-ui-addon-mobile-components-tab-bar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\n\n@Component({\n selector: 'button[tuiTabBarItem], a[tuiTabBarItem]',\n imports: [TuiAnimated, TuiIcon],\n templateUrl: './tab-bar-item.template.html',\n styleUrl: './tab-bar-item.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTabBarItem {\n public readonly icon = input('');\n public readonly badge = input<number>();\n\n protected format(value: number): string {\n return value > 999 ? '999+' : String(value);\n }\n}\n","<tui-icon\n class=\"t-icon\"\n [icon]=\"icon()\"\n/>\n<span class=\"t-wrapper\">\n @if (badge(); as value) {\n <span\n tuiAnimated\n class=\"t-badge\"\n >\n {{ format(value) }}\n </span>\n }\n</span>\n<span class=\"t-text\">\n <ng-content />\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n ElementRef,\n input,\n model,\n} from '@angular/core';\n\nimport {TuiTabBarItem} from './tab-bar-item.component';\n\n@Component({\n selector: 'nav[tuiTabBar]',\n templateUrl: './tab-bar.template.html',\n styleUrl: './tab-bar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': '`--tui-tab-${this.activeItemIndex() + 1}: var(--tui-active-color)`',\n '(click)': 'setActive($event.target)',\n },\n})\nexport class TuiTabBarComponent {\n private readonly tabs = contentChildren(TuiTabBarItem, {read: ElementRef});\n\n public readonly quantity = input(4);\n public readonly activeItemIndex = model(Number.NaN);\n\n public setActive(tab: Element): void {\n this.updateIndex(this.tabs().findIndex((el) => el.nativeElement === tab));\n }\n\n private updateIndex(index: number): void {\n this.activeItemIndex.set(index);\n }\n}\n","<ng-content />\n<div class=\"t-skeletons\">\n @for (_ of '-'.repeat(quantity()); track $index) {\n <div class=\"t-skeleton\"></div>\n }\n</div>\n","import {DestroyRef, Directive, inject} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {EMPTY} from 'rxjs';\n\nimport {TuiTabBarComponent} from './tab-bar.component';\n\n@Directive({selector: '[tuiTabBarItem][routerLinkActive]'})\nexport class TuiTabBarItemDirective {\n constructor() {\n const tabs = inject(TuiTabBarComponent);\n const el = tuiInjectElement();\n const link = inject(RouterLinkActive, {optional: true})?.isActiveChange || EMPTY;\n const sub = link.subscribe((value) => {\n if (value) {\n tabs.setActive(el);\n }\n });\n\n inject(DestroyRef).onDestroy(() => sub.unsubscribe());\n }\n}\n","import {TuiTabBarComponent} from './tab-bar.component';\nimport {TuiTabBarItem} from './tab-bar-item.component';\nimport {TuiTabBarItemDirective} from './tab-bar-item.directive';\n\nexport const TuiTabBar = [\n TuiTabBarComponent,\n TuiTabBarItem,\n TuiTabBarItemDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-components-tab-bar.mjs","sources":["../../../projects/addon-mobile/components/tab-bar/tab-bar-item.component.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar-item.template.html","../../../projects/addon-mobile/components/tab-bar/tab-bar.component.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar.template.html","../../../projects/addon-mobile/components/tab-bar/tab-bar-item.directive.ts","../../../projects/addon-mobile/components/tab-bar/tab-bar.ts","../../../projects/addon-mobile/components/tab-bar/taiga-ui-addon-mobile-components-tab-bar.ts"],"sourcesContent":["import {ChangeDetectionStrategy, Component, input} from '@angular/core';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {TuiIcon} from '@taiga-ui/core/components/icon';\n\n@Component({\n selector: 'button[tuiTabBarItem], a[tuiTabBarItem]',\n imports: [TuiAnimated, TuiIcon],\n templateUrl: './tab-bar-item.template.html',\n styleUrl: './tab-bar-item.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiTabBarItem {\n public readonly icon = input('');\n public readonly badge = input<number>();\n\n protected format(value: number): string {\n return value > 999 ? '999+' : String(value);\n }\n}\n","<tui-icon\n class=\"t-icon\"\n [icon]=\"icon()\"\n/>\n<span class=\"t-wrapper\">\n @if (badge(); as value) {\n <span\n tuiAnimated\n class=\"t-badge\"\n >\n {{ format(value) }}\n </span>\n }\n</span>\n<span class=\"t-text\">\n <ng-content />\n</span>\n","import {\n ChangeDetectionStrategy,\n Component,\n contentChildren,\n ElementRef,\n input,\n model,\n} from '@angular/core';\n\nimport {TuiTabBarItem} from './tab-bar-item.component';\n\n@Component({\n selector: 'nav[tuiTabBar]',\n templateUrl: './tab-bar.template.html',\n styleUrl: './tab-bar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[style]': '`--tui-tab-${this.activeItemIndex() + 1}: var(--tui-active-color)`',\n '(click)': 'setActive($event.target)',\n },\n})\nexport class TuiTabBarComponent {\n private readonly tabs = contentChildren(TuiTabBarItem, {read: ElementRef});\n public readonly quantity = input(4);\n public readonly activeItemIndex = model(Number.NaN);\n\n public setActive(tab: Element): void {\n this.updateIndex(this.tabs().findIndex((el) => el.nativeElement === tab));\n }\n\n private updateIndex(index: number): void {\n this.activeItemIndex.set(index);\n }\n}\n","<ng-content />\n<div class=\"t-skeletons\">\n @for (_ of '-'.repeat(quantity()); track $index) {\n <div class=\"t-skeleton\"></div>\n }\n</div>\n","import {DestroyRef, Directive, inject} from '@angular/core';\nimport {RouterLinkActive} from '@angular/router';\nimport {tuiInjectElement} from '@taiga-ui/cdk/utils/dom';\nimport {EMPTY} from 'rxjs';\n\nimport {TuiTabBarComponent} from './tab-bar.component';\n\n@Directive({selector: '[tuiTabBarItem][routerLinkActive]'})\nexport class TuiTabBarItemDirective {\n constructor() {\n const tabs = inject(TuiTabBarComponent);\n const el = tuiInjectElement();\n const link = inject(RouterLinkActive, {optional: true})?.isActiveChange || EMPTY;\n const sub = link.subscribe((value) => {\n if (value) {\n tabs.setActive(el);\n }\n });\n\n inject(DestroyRef).onDestroy(() => sub.unsubscribe());\n }\n}\n","import {TuiTabBarComponent} from './tab-bar.component';\nimport {TuiTabBarItem} from './tab-bar-item.component';\nimport {TuiTabBarItemDirective} from './tab-bar-item.directive';\n\nexport const TuiTabBar = [\n TuiTabBarComponent,\n TuiTabBarItem,\n TuiTabBarItemDirective,\n] as const;\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -68,13 +68,13 @@ class TuiDropdownMobileComponent {
68
68
  return this.dropdown.el.contains(tuiGetFocused(this.doc));
69
69
  }
70
70
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDropdownMobileComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
71
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { attributes: { "data-tui-version": "5.3.0" }, listeners: { "pointerdown.prevent": "0", "document:click.zoneless.capture": "onClick($event)", "window>scroll.zoneless.capture": "refresh()", "visualViewport>resize.zoneless": "refresh()", "visualViewport>scroll.zoneless": "refresh()" } }, hostDirectives: [{ directive: i1.TuiAnimated }, { directive: i2.TuiActiveZone }], ngImport: i0, template: `
71
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: TuiDropdownMobileComponent, isStandalone: true, selector: "tui-dropdown-mobile", host: { attributes: { "data-tui-version": "5.4.0-canary.d26a6e2" }, listeners: { "document:click.zoneless.capture": "onClick($event)", "pointerdown.prevent": "0", "visualViewport>resize.zoneless": "refresh()", "visualViewport>scroll.zoneless": "refresh()", "window>scroll.zoneless.capture": "refresh()" } }, hostDirectives: [{ directive: i1.TuiAnimated }, { directive: i2.TuiActiveZone }], ngImport: i0, template: `
72
72
  <div class="t-container">
73
73
  <ng-container *polymorpheusOutlet="dropdown.content() as text; context: ctx">
74
74
  {{ text }}
75
75
  </ng-container>
76
76
  </div>
77
- `, isInline: true, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root tui-dialogs{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
77
+ `, isInline: true, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root tui-dialogs{visibility:hidden}\n"], dependencies: [{ kind: "directive", type: PolymorpheusOutlet, selector: "[polymorpheusOutlet]", inputs: ["polymorpheusOutlet", "polymorpheusOutletContext"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
78
78
  }
79
79
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: TuiDropdownMobileComponent, decorators: [{
80
80
  type: Component,
@@ -86,12 +86,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImpo
86
86
  </div>
87
87
  `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, hostDirectives: [TuiAnimated, TuiActiveZone], host: {
88
88
  'data-tui-version': TUI_VERSION,
89
- '(pointerdown.prevent)': '0',
90
89
  '(document:click.zoneless.capture)': 'onClick($event)',
91
- '(window>scroll.zoneless.capture)': 'refresh()',
90
+ '(pointerdown.prevent)': '0',
92
91
  '(visualViewport>resize.zoneless)': 'refresh()',
93
92
  '(visualViewport>scroll.zoneless)': 'refresh()',
94
- }, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.3.0\"]) tui-root tui-dialogs{visibility:hidden}\n"] }]
93
+ '(window>scroll.zoneless.capture)': 'refresh()',
94
+ }, styles: ["tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){scrollbar-width:none;-ms-overflow-style:none;position:absolute;inset-block-start:0;inset-inline-start:0;inline-size:100%;block-size:100%;visibility:visible!important;background:var(--tui-background-base);overscroll-behavior:contain;overflow:auto;box-shadow:0 -.5rem .5rem var(--tui-background-base),0 10rem var(--tui-background-base),0 20rem var(--tui-background-base),0 30rem var(--tui-background-base);box-sizing:border-box;padding-block-end:env(safe-area-inset-bottom);pointer-events:auto}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]).tui-enter,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]).tui-leave{animation-name:tuiFade,tuiSlide}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]):after{content:\"\";display:block;block-size:1px}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container{scrollbar-width:none;-ms-overflow-style:none;position:sticky;inset-block-start:0;block-size:100%;overflow:auto;padding:0 1rem;touch-action:pan-y!important}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container::-webkit-scrollbar,tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container::-webkit-scrollbar-thumb{display:none}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"])>.t-container tui-data-list{padding:0;margin:0 -.5rem}tui-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) [tuiDropdownButton][tuiDropdownButton]{position:fixed;display:inline-flex;inset-inline-end:1rem;inset-block-end:max(1rem,env(safe-area-inset-bottom))}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){touch-action:none;visibility:hidden}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) *{touch-action:inherit;visibility:inherit}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root{visibility:visible}.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root .t-root-content,.t-dropdown-mobile:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]) tui-root tui-dialogs{visibility:hidden}\n"] }]
95
95
  }], ctorParameters: () => [] });
96
96
 
97
97
  class TuiDropdownMobile {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-mobile.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.component.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.directive.ts","../../../projects/addon-mobile/directives/dropdown-mobile/taiga-ui-addon-mobile-directives-dropdown-mobile.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement, tuiIsElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nconst GAP = 16;\n\n@Component({\n selector: 'tui-dropdown-mobile',\n imports: [PolymorpheusOutlet],\n template: `\n <div class=\"t-container\">\n <ng-container *polymorpheusOutlet=\"dropdown.content() as text; context: ctx\">\n {{ text }}\n </ng-container>\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './dropdown-mobile.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated, TuiActiveZone],\n host: {\n 'data-tui-version': TUI_VERSION,\n '(pointerdown.prevent)': '0',\n '(document:click.zoneless.capture)': 'onClick($event)',\n '(window>scroll.zoneless.capture)': 'refresh()',\n '(visualViewport>resize.zoneless)': 'refresh()',\n '(visualViewport>scroll.zoneless)': 'refresh()',\n },\n})\nexport class TuiDropdownMobileComponent implements OnDestroy {\n private readonly el = tuiInjectElement();\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly doc = inject(DOCUMENT);\n private readonly scrollTop = this.doc.documentElement.scrollTop;\n private readonly observer = new ResizeObserver(() => this.refresh());\n\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly ctx = {$implicit: (): void => this.dropdown.toggle(false)};\n\n constructor() {\n this.observer.observe(this.dropdown.el);\n this.doc.documentElement.style.setProperty('scroll-behavior', 'initial');\n }\n\n public ngOnDestroy(): void {\n this.observer.disconnect();\n this.doc.body.classList.remove('t-dropdown-mobile');\n this.doc.body.removeAttribute('data-tui-version');\n this.doc.body.style.removeProperty('--t-root-top');\n this.doc.documentElement.scrollTop = this.scrollTop;\n this.doc.documentElement.style.removeProperty('scroll-behavior');\n\n if (this.focused) {\n this.keyboard.hide();\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (\n tuiIsElement(event.target) &&\n !this.el.contains(event.target) &&\n (!this.dropdown.el.contains(event.target) ||\n event.target.matches('input,textarea'))\n ) {\n event.stopPropagation();\n }\n }\n\n protected refresh(): void {\n const {offsetTop = 0, height = 0} = this.doc.defaultView?.visualViewport || {};\n\n this.doc.body.style.removeProperty('--t-root-top');\n\n if (\n !this.focused ||\n !this.doc.documentElement.style.getPropertyValue('scroll-behavior')\n ) {\n return;\n }\n\n this.doc.documentElement.scrollTop = 0;\n\n const rect = this.dropdown.el.getBoundingClientRect();\n const topMargin = `max(var(--tui-dropdown-mobile-offset, ${tuiPx(GAP)}), env(safe-area-inset-top))`;\n const offset = `(${topMargin} + ${tuiPx(rect.height + GAP)})`;\n const top = `calc(${tuiPx(offsetTop - rect.top)} + ${topMargin})`;\n\n this.el.style.setProperty('top', `calc(${tuiPx(offsetTop)} + ${offset})`);\n this.el.style.setProperty('height', `calc(${tuiPx(height)} - ${offset})`);\n this.doc.body.classList.add('t-dropdown-mobile');\n this.doc.body.setAttribute('data-tui-version', TUI_VERSION);\n this.doc.body.style.setProperty('--t-root-top', top);\n }\n\n private get focused(): boolean {\n return this.dropdown.el.contains(tuiGetFocused(this.doc));\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TUI_DROPDOWN_COMPONENT,\n TuiDropdownDirective,\n} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDropdownMobileComponent} from './dropdown-mobile.component';\n\n@Directive({\n selector: '[tuiDropdownMobile]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiDropdownMobileComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n host: {\n '[style.visibility]': 'dropdown.ref() ? \"visible\" : \"\"',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class TuiDropdownMobile {\n private readonly isMobile = inject(WA_IS_MOBILE);\n protected readonly dropdown = inject(TuiDropdownDirective);\n\n protected onMouseDown(event: MouseEvent): void {\n if (\n !this.isMobile ||\n !tuiIsHTMLElement(event.target) ||\n !event.target.matches('input,textarea')\n ) {\n return;\n }\n\n event.preventDefault();\n event.target.focus({preventScroll: true});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-mobile.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.component.ts","../../../projects/addon-mobile/directives/dropdown-mobile/dropdown-mobile.directive.ts","../../../projects/addon-mobile/directives/dropdown-mobile/taiga-ui-addon-mobile-directives-dropdown-mobile.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n type OnDestroy,\n ViewEncapsulation,\n} from '@angular/core';\nimport {TuiKeyboardService} from '@taiga-ui/addon-mobile/services';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {TuiActiveZone} from '@taiga-ui/cdk/directives/active-zone';\nimport {TuiAnimated} from '@taiga-ui/cdk/directives/animated';\nimport {tuiInjectElement, tuiIsElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {tuiPx} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nconst GAP = 16;\n\n@Component({\n selector: 'tui-dropdown-mobile',\n imports: [PolymorpheusOutlet],\n template: `\n <div class=\"t-container\">\n <ng-container *polymorpheusOutlet=\"dropdown.content() as text; context: ctx\">\n {{ text }}\n </ng-container>\n </div>\n `,\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './dropdown-mobile.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [TuiAnimated, TuiActiveZone],\n host: {\n 'data-tui-version': TUI_VERSION,\n '(document:click.zoneless.capture)': 'onClick($event)',\n '(pointerdown.prevent)': '0',\n '(visualViewport>resize.zoneless)': 'refresh()',\n '(visualViewport>scroll.zoneless)': 'refresh()',\n '(window>scroll.zoneless.capture)': 'refresh()',\n },\n})\nexport class TuiDropdownMobileComponent implements OnDestroy {\n private readonly el = tuiInjectElement();\n private readonly keyboard = inject(TuiKeyboardService);\n private readonly doc = inject(DOCUMENT);\n private readonly scrollTop = this.doc.documentElement.scrollTop;\n private readonly observer = new ResizeObserver(() => this.refresh());\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly ctx = {$implicit: (): void => this.dropdown.toggle(false)};\n\n constructor() {\n this.observer.observe(this.dropdown.el);\n this.doc.documentElement.style.setProperty('scroll-behavior', 'initial');\n }\n\n public ngOnDestroy(): void {\n this.observer.disconnect();\n this.doc.body.classList.remove('t-dropdown-mobile');\n this.doc.body.removeAttribute('data-tui-version');\n this.doc.body.style.removeProperty('--t-root-top');\n this.doc.documentElement.scrollTop = this.scrollTop;\n this.doc.documentElement.style.removeProperty('scroll-behavior');\n\n if (this.focused) {\n this.keyboard.hide();\n }\n }\n\n protected onClick(event: MouseEvent): void {\n if (\n tuiIsElement(event.target) &&\n !this.el.contains(event.target) &&\n (!this.dropdown.el.contains(event.target) ||\n event.target.matches('input,textarea'))\n ) {\n event.stopPropagation();\n }\n }\n\n protected refresh(): void {\n const {offsetTop = 0, height = 0} = this.doc.defaultView?.visualViewport || {};\n\n this.doc.body.style.removeProperty('--t-root-top');\n\n if (\n !this.focused ||\n !this.doc.documentElement.style.getPropertyValue('scroll-behavior')\n ) {\n return;\n }\n\n this.doc.documentElement.scrollTop = 0;\n\n const rect = this.dropdown.el.getBoundingClientRect();\n const topMargin = `max(var(--tui-dropdown-mobile-offset, ${tuiPx(GAP)}), env(safe-area-inset-top))`;\n const offset = `(${topMargin} + ${tuiPx(rect.height + GAP)})`;\n const top = `calc(${tuiPx(offsetTop - rect.top)} + ${topMargin})`;\n\n this.el.style.setProperty('top', `calc(${tuiPx(offsetTop)} + ${offset})`);\n this.el.style.setProperty('height', `calc(${tuiPx(height)} - ${offset})`);\n this.doc.body.classList.add('t-dropdown-mobile');\n this.doc.body.setAttribute('data-tui-version', TUI_VERSION);\n this.doc.body.style.setProperty('--t-root-top', top);\n }\n\n private get focused(): boolean {\n return this.dropdown.el.contains(tuiGetFocused(this.doc));\n }\n}\n","import {Directive, inject} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {\n TUI_DROPDOWN_COMPONENT,\n TuiDropdownDirective,\n} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDropdownMobileComponent} from './dropdown-mobile.component';\n\n@Directive({\n selector: '[tuiDropdownMobile]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiDropdownMobileComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n host: {\n '[style.visibility]': 'dropdown.ref() ? \"visible\" : \"\"',\n '(mousedown)': 'onMouseDown($event)',\n },\n})\nexport class TuiDropdownMobile {\n private readonly isMobile = inject(WA_IS_MOBILE);\n protected readonly dropdown = inject(TuiDropdownDirective);\n\n protected onMouseDown(event: MouseEvent): void {\n if (\n !this.isMobile ||\n !tuiIsHTMLElement(event.target) ||\n !event.target.matches('input,textarea')\n ) {\n return;\n }\n\n event.preventDefault();\n event.target.focus({preventScroll: true});\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-sheet.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-sheet/dropdown-sheet.directive.ts","../../../projects/addon-mobile/directives/dropdown-sheet/dropdown-sheet.component.ts","../../../projects/addon-mobile/directives/dropdown-sheet/taiga-ui-addon-mobile-directives-dropdown-sheet.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDropdownSheetComponent} from './dropdown-sheet.component';\n\n@Directive({\n selector: '[tuiDropdownSheet]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiDropdownSheetComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiDropdownSheet {\n public readonly tuiDropdownSheet = input('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {TuiSheetDialogService} from '@taiga-ui/addon-mobile/components/sheet-dialog';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownSheet} from './dropdown-sheet.directive';\n\n@Component({\n imports: [PolymorpheusOutlet],\n template: `\n <ng-template>\n <ng-container\n *polymorpheusOutlet=\"dropdown.content() as text; context: context\"\n >\n {{ text }}\n </ng-container>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDropdownSheetComponent {\n private readonly content = viewChild(TemplateRef);\n private readonly dialogs = inject(TuiSheetDialogService);\n private readonly directive = inject(TuiDropdownSheet);\n\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly context = {$implicit: (): void => this.dropdown.toggle(false)};\n protected readonly sub = toObservable(this.content)\n .pipe(\n tuiIfMap((content) =>\n this.dialogs.open(content, {label: this.directive.tuiDropdownSheet()}),\n ),\n takeUntilDestroyed(),\n )\n .subscribe({complete: () => this.dropdown.toggle(false)});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;MAkBa,gBAAgB,CAAA;AAZ7B,IAAA,WAAA,GAAA;AAaoB,QAAA,IAAA,CAAA,gBAAgB,GAAG,KAAK,CAAC,EAAE,CAAC;AAC/C,IAAA;+GAFY,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,EAAA,gBAAA,EAAA,EAAA,iBAAA,EAAA,kBAAA,EAAA,UAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,SAAA,EAVd;AACP,YAAA;AACI,gBAAA,OAAO,EAAE,sBAAsB;AAC/B,gBAAA,UAAU,EAAE,MACR,MAAM,CAAC,YAAY;AACf,sBAAE;sBACA,MAAM,CAAC,sBAAsB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC7D,aAAA;AACJ,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAEQ,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAZ5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,oBAAoB;AAC9B,oBAAA,SAAS,EAAE;AACP,wBAAA;AACI,4BAAA,OAAO,EAAE,sBAAsB;AAC/B,4BAAA,UAAU,EAAE,MACR,MAAM,CAAC,YAAY;AACf,kCAAE;kCACA,MAAM,CAAC,sBAAsB,EAAE,EAAC,QAAQ,EAAE,IAAI,EAAC,CAAC;AAC7D,yBAAA;AACJ,qBAAA;AACJ,iBAAA;;;MCWY,yBAAyB,CAAA;AAbtC,IAAA,WAAA,GAAA;AAcqB,QAAA,IAAA,CAAA,OAAO,GAAG,SAAS,CAAC,WAAW,CAAC;AAChC,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC;AACvC,QAAA,IAAA,CAAA,SAAS,GAAG,MAAM,CAAC,gBAAgB,CAAC;AAElC,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC;AACvC,QAAA,IAAA,CAAA,OAAO,GAAG,EAAC,SAAS,EAAE,MAAY,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;AAC9D,QAAA,IAAA,CAAA,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO;AAC7C,aAAA,IAAI,CACD,QAAQ,CAAC,CAAC,OAAO,KACb,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,EAAC,CAAC,CACzE,EACD,kBAAkB,EAAE;AAEvB,aAAA,SAAS,CAAC,EAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC;AAChE,IAAA;+GAfY,yBAAyB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAzB,yBAAyB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,SAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EACG,WAAW,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EAZtC;;;;;;;;AAQT,IAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EATS,kBAAkB,EAAA,QAAA,EAAA,sBAAA,EAAA,MAAA,EAAA,CAAA,oBAAA,EAAA,2BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAYnB,yBAAyB,EAAA,UAAA,EAAA,CAAA;kBAbrC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;oBACP,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAC7B,oBAAA,QAAQ,EAAE;;;;;;;;AAQT,IAAA,CAAA;oBACD,eAAe,EAAE,uBAAuB,CAAC,MAAM;AAClD,iBAAA;;;AC3BD;;AAEG;;;;"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-directives-dropdown-sheet.mjs","sources":["../../../projects/addon-mobile/directives/dropdown-sheet/dropdown-sheet.directive.ts","../../../projects/addon-mobile/directives/dropdown-sheet/dropdown-sheet.component.ts","../../../projects/addon-mobile/directives/dropdown-sheet/taiga-ui-addon-mobile-directives-dropdown-sheet.ts"],"sourcesContent":["import {Directive, inject, input} from '@angular/core';\nimport {WA_IS_MOBILE} from '@ng-web-apis/platform';\nimport {TUI_DROPDOWN_COMPONENT} from '@taiga-ui/core/portals/dropdown';\n\nimport {TuiDropdownSheetComponent} from './dropdown-sheet.component';\n\n@Directive({\n selector: '[tuiDropdownSheet]',\n providers: [\n {\n provide: TUI_DROPDOWN_COMPONENT,\n useFactory: () =>\n inject(WA_IS_MOBILE)\n ? TuiDropdownSheetComponent\n : inject(TUI_DROPDOWN_COMPONENT, {skipSelf: true}),\n },\n ],\n})\nexport class TuiDropdownSheet {\n public readonly tuiDropdownSheet = input('');\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n TemplateRef,\n viewChild,\n} from '@angular/core';\nimport {takeUntilDestroyed, toObservable} from '@angular/core/rxjs-interop';\nimport {TuiSheetDialogService} from '@taiga-ui/addon-mobile/components/sheet-dialog';\nimport {tuiIfMap} from '@taiga-ui/cdk/observables';\nimport {TuiDropdownDirective} from '@taiga-ui/core/portals/dropdown';\nimport {PolymorpheusOutlet} from '@taiga-ui/polymorpheus';\n\nimport {TuiDropdownSheet} from './dropdown-sheet.directive';\n\n@Component({\n imports: [PolymorpheusOutlet],\n template: `\n <ng-template>\n <ng-container\n *polymorpheusOutlet=\"dropdown.content() as text; context: context\"\n >\n {{ text }}\n </ng-container>\n </ng-template>\n `,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiDropdownSheetComponent {\n private readonly content = viewChild(TemplateRef);\n private readonly dialogs = inject(TuiSheetDialogService);\n private readonly directive = inject(TuiDropdownSheet);\n protected readonly dropdown = inject(TuiDropdownDirective);\n protected readonly context = {$implicit: (): void => this.dropdown.toggle(false)};\n\n protected readonly sub = toObservable(this.content)\n .pipe(\n tuiIfMap((content) =>\n this.dialogs.open(content, {label: this.directive.tuiDropdownSheet()}),\n ),\n takeUntilDestroyed(),\n )\n .subscribe({complete: () => this.dropdown.toggle(false)});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -13,11 +13,11 @@ const TO = [{ transform: 'scale(0)', opacity: '0.12' }, { opacity: '0.12' }];
13
13
  const FROM = [{ opacity: '0.12' }, { opacity: '0' }];
14
14
  class Styles {
15
15
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
16
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-ripple-5.3.0"], ngImport: i0, template: '', isInline: true, styles: [".tui-ripple:where(*[data-tui-version=\"5.3.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
16
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.20", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-ripple-5.4.0-canary.d26a6e2"], ngImport: i0, template: '', isInline: true, styles: [".tui-ripple:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
17
17
  }
18
18
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: Styles, decorators: [{
19
19
  type: Component,
20
- args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-ripple-${TUI_VERSION}`, styles: [".tui-ripple:where(*[data-tui-version=\"5.3.0\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"] }]
20
+ args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-ripple-${TUI_VERSION}`, styles: [".tui-ripple:where(*[data-tui-version=\"5.4.0-canary.d26a6e2\"]){position:absolute;z-index:100;opacity:.12;border-radius:100%;background:var(--tui-ripple-background, currentColor);animation-fill-mode:forwards;pointer-events:none}\n"] }]
21
21
  }] });
22
22
  class TuiRipple {
23
23
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-directives-ripple.mjs","sources":["../../../projects/addon-mobile/directives/ripple/ripple.directive.ts","../../../projects/addon-mobile/directives/ripple/taiga-ui-addon-mobile-directives-ripple.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiPx, tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {first, fromEvent, merge, race, switchMap, tap} from 'rxjs';\n\nconst TO = [{transform: 'scale(0)', opacity: '0.12'}, {opacity: '0.12'}];\nconst FROM = [{opacity: '0.12'}, {opacity: '0'}];\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './ripple.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-ripple-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiRipple]',\n host: {\n '(pointerdown.zoneless)':\n 'start($event.clientX, $event.clientY, $event.target, $event.currentTarget)',\n },\n})\nexport class TuiRipple {\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly duration = tuiGetDuration(inject(TUI_ANIMATIONS_SPEED));\n\n protected readonly nothing = tuiWithStyles(Styles);\n\n public readonly tuiRipple = input('');\n\n protected start(x: number, y: number, target: HTMLElement, el: HTMLElement): void {\n const element = this.tuiRipple() ? target.closest(this.tuiRipple()) : el;\n\n if (!tuiIsHTMLElement(element)) {\n return;\n }\n\n const ripple = this.createRipple(x, y, element.getBoundingClientRect());\n const touchEnd$ = merge(\n fromEvent(element, 'pointerup'),\n fromEvent(element, 'pointercancel'),\n fromEvent(element, 'pointermove'),\n );\n\n element.appendChild(ripple);\n\n const animationEnd$ = fromEvent(ripple.animate(TO, this.duration), 'finish');\n\n race(\n touchEnd$.pipe(switchMap(() => animationEnd$)),\n animationEnd$.pipe(switchMap(() => touchEnd$)),\n )\n .pipe(\n first(),\n switchMap(() => fromEvent(ripple.animate(FROM, this.duration), 'finish')),\n first(),\n tap(() => element.removeChild(ripple)),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private createRipple(\n clientX: number,\n clientY: number,\n {width, height, top, left}: DOMRect,\n ): HTMLElement {\n const ripple: HTMLElement = this.doc.createElement('div');\n const radius = Math.sqrt(width * width + height * height);\n const dimension = radius * 2;\n const x = clientX - left - radius;\n const y = clientY - top - radius;\n\n Object.assign(ripple.style, {\n position: 'absolute',\n top: tuiPx(y),\n left: tuiPx(x),\n width: tuiPx(dimension),\n height: tuiPx(dimension),\n zIndex: 100,\n opacity: 0.12,\n borderRadius: '100%',\n background: 'var(--tui-ripple-background, currentColor)',\n animationFillMode: 'forwards',\n pointerEvents: 'none',\n });\n\n return ripple;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-directives-ripple.mjs","sources":["../../../projects/addon-mobile/directives/ripple/ripple.directive.ts","../../../projects/addon-mobile/directives/ripple/taiga-ui-addon-mobile-directives-ripple.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n DestroyRef,\n Directive,\n inject,\n input,\n ViewEncapsulation,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {TUI_VERSION} from '@taiga-ui/cdk/constants';\nimport {tuiIsHTMLElement} from '@taiga-ui/cdk/utils/dom';\nimport {tuiPx, tuiWithStyles} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_ANIMATIONS_SPEED} from '@taiga-ui/core/tokens';\nimport {tuiGetDuration} from '@taiga-ui/core/utils/miscellaneous';\nimport {first, fromEvent, merge, race, switchMap, tap} from 'rxjs';\n\nconst TO = [{transform: 'scale(0)', opacity: '0.12'}, {opacity: '0.12'}];\nconst FROM = [{opacity: '0.12'}, {opacity: '0'}];\n\n@Component({\n template: '',\n styles: `\n [data-tui-version='${TUI_VERSION}'] {\n @import './ripple.style.less';\n }\n `,\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush,\n exportAs: `tui-ripple-${TUI_VERSION}`,\n})\nclass Styles {}\n\n@Directive({\n selector: '[tuiRipple]',\n host: {\n '(pointerdown.zoneless)':\n 'start($event.clientX, $event.clientY, $event.target, $event.currentTarget)',\n },\n})\nexport class TuiRipple {\n private readonly doc = inject(DOCUMENT);\n private readonly destroyRef = inject(DestroyRef);\n private readonly duration = tuiGetDuration(inject(TUI_ANIMATIONS_SPEED));\n protected readonly nothing = tuiWithStyles(Styles);\n public readonly tuiRipple = input('');\n\n protected start(x: number, y: number, target: HTMLElement, el: HTMLElement): void {\n const element = this.tuiRipple() ? target.closest(this.tuiRipple()) : el;\n\n if (!tuiIsHTMLElement(element)) {\n return;\n }\n\n const ripple = this.createRipple(x, y, element.getBoundingClientRect());\n const touchEnd$ = merge(\n fromEvent(element, 'pointerup'),\n fromEvent(element, 'pointercancel'),\n fromEvent(element, 'pointermove'),\n );\n\n element.appendChild(ripple);\n\n const animationEnd$ = fromEvent(ripple.animate(TO, this.duration), 'finish');\n\n race(\n touchEnd$.pipe(switchMap(() => animationEnd$)),\n animationEnd$.pipe(switchMap(() => touchEnd$)),\n )\n .pipe(\n first(),\n switchMap(() => fromEvent(ripple.animate(FROM, this.duration), 'finish')),\n first(),\n tap(() => element.removeChild(ripple)),\n takeUntilDestroyed(this.destroyRef),\n )\n .subscribe();\n }\n\n private createRipple(\n clientX: number,\n clientY: number,\n {width, height, top, left}: DOMRect,\n ): HTMLElement {\n const ripple: HTMLElement = this.doc.createElement('div');\n const radius = Math.sqrt(width * width + height * height);\n const dimension = radius * 2;\n const x = clientX - left - radius;\n const y = clientY - top - radius;\n\n Object.assign(ripple.style, {\n position: 'absolute',\n top: tuiPx(y),\n left: tuiPx(x),\n width: tuiPx(dimension),\n height: tuiPx(dimension),\n zIndex: 100,\n opacity: 0.12,\n borderRadius: '100%',\n background: 'var(--tui-ripple-background, currentColor)',\n animationFillMode: 'forwards',\n pointerEvents: 'none',\n });\n\n return ripple;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"taiga-ui-addon-mobile-services.mjs","sources":["../../../projects/addon-mobile/services/keyboard.service.ts","../../../projects/addon-mobile/services/theme-color.service.ts","../../../projects/addon-mobile/services/taiga-ui-addon-mobile-services.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, type OnDestroy} from '@angular/core';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {filter, fromEvent, merge} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class TuiKeyboardService implements OnDestroy {\n private readonly doc = inject(DOCUMENT);\n private readonly sub = merge(\n fromEvent(this.doc, 'focusout'),\n fromEvent(this.doc, 'mousedown').pipe(\n filter((e) => Object.is(e.target, this.element)),\n ),\n ).subscribe(() => {\n this.show();\n });\n\n private element?: ElementContentEditable;\n private inputMode = '';\n\n public ngOnDestroy(): void {\n this.sub.unsubscribe();\n this.show();\n }\n\n public toggle(): void {\n if (this.element) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n public hide(): void {\n const focused = tuiGetFocused(this.doc) as HTMLInputElement;\n\n if (focused?.inputMode === undefined || this.element) {\n return;\n }\n\n this.element = focused;\n this.inputMode = focused.inputMode;\n focused.inputMode = 'none';\n }\n\n public show(): void {\n if (!this.element) {\n return;\n }\n\n this.element.inputMode = 'none';\n this.element.inputMode = this.inputMode;\n this.element = undefined;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, InjectionToken} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\n\nexport const TUI_THEME_COLOR = new InjectionToken<string>(\n ngDevMode ? 'TUI_THEME_COLOR' : '',\n {factory: () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? ''},\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({providedIn: 'root'})\nexport class TuiThemeColorService implements TuiThemeColor {\n private current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n constructor() {\n this.color = this.current;\n }\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.current = content;\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"taiga-ui-addon-mobile-services.mjs","sources":["../../../projects/addon-mobile/services/keyboard.service.ts","../../../projects/addon-mobile/services/theme-color.service.ts","../../../projects/addon-mobile/services/taiga-ui-addon-mobile-services.ts"],"sourcesContent":["import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, type OnDestroy} from '@angular/core';\nimport {tuiGetFocused} from '@taiga-ui/cdk/utils/focus';\nimport {filter, fromEvent, merge} from 'rxjs';\n\n@Injectable({providedIn: 'root'})\nexport class TuiKeyboardService implements OnDestroy {\n private readonly doc = inject(DOCUMENT);\n\n private readonly sub = merge(\n fromEvent(this.doc, 'focusout'),\n fromEvent(this.doc, 'mousedown').pipe(\n filter((e) => Object.is(e.target, this.element)),\n ),\n ).subscribe(() => {\n this.show();\n });\n\n private element?: ElementContentEditable;\n private inputMode = '';\n\n public ngOnDestroy(): void {\n this.sub.unsubscribe();\n this.show();\n }\n\n public toggle(): void {\n if (this.element) {\n this.show();\n } else {\n this.hide();\n }\n }\n\n public hide(): void {\n const focused = tuiGetFocused(this.doc) as HTMLInputElement;\n\n if (focused?.inputMode === undefined || this.element) {\n return;\n }\n\n this.element = focused;\n this.inputMode = focused.inputMode;\n focused.inputMode = 'none';\n }\n\n public show(): void {\n if (!this.element) {\n return;\n }\n\n this.element.inputMode = 'none';\n this.element.inputMode = this.inputMode;\n this.element = undefined;\n }\n}\n","import {DOCUMENT} from '@angular/common';\nimport {inject, Injectable, InjectionToken} from '@angular/core';\nimport {Meta} from '@angular/platform-browser';\n\nexport const TUI_THEME_COLOR = new InjectionToken<string>(\n ngDevMode ? 'TUI_THEME_COLOR' : '',\n {factory: () => inject(Meta).getTag('name=\"theme-color\"')?.content ?? ''},\n);\n\ninterface TuiThemeColor {\n get color(): string;\n set color(value: string);\n}\n\n@Injectable({providedIn: 'root'})\nexport class TuiThemeColorService implements TuiThemeColor {\n private current = inject(TUI_THEME_COLOR);\n private readonly doc = inject(DOCUMENT);\n private readonly meta = inject(Meta);\n\n constructor() {\n this.color = this.current;\n }\n\n public get color(): string {\n return this.current;\n }\n\n public set color(content: string) {\n this.current = content;\n this.meta.updateTag({name: 'theme-color', content});\n this.doc.documentElement.style.setProperty('--tui-theme-color', content);\n }\n}\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/addon-mobile",
3
- "version": "5.3.0",
3
+ "version": "5.4.0-canary.d26a6e2",
4
4
  "description": "Extension package for Taiga UI that adds support for mobile specific behaviors such as custom data pickers, dropdowns, etc.",
5
5
  "keywords": [
6
6
  "angular",
@@ -111,10 +111,10 @@
111
111
  "@angular/core": ">=19.0.0",
112
112
  "@ng-web-apis/common": "^5.2.0",
113
113
  "@ng-web-apis/platform": "^5.2.0",
114
- "@taiga-ui/cdk": "5.3.0",
115
- "@taiga-ui/core": "5.3.0",
116
- "@taiga-ui/kit": "5.3.0",
117
- "@taiga-ui/layout": "5.3.0",
114
+ "@taiga-ui/cdk": "5.4.0",
115
+ "@taiga-ui/core": "5.4.0",
116
+ "@taiga-ui/kit": "5.4.0",
117
+ "@taiga-ui/layout": "5.4.0",
118
118
  "@taiga-ui/polymorpheus": "^5.0.0",
119
119
  "rxjs": ">=7.0.0"
120
120
  },