@taiga-ui/core 5.24.0 → 5.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/classes/accessors.d.ts +6 -1
- package/components/cell/cell-stretch.directive.d.ts +1 -1
- package/components/data-list/option.directive.d.ts +1 -1
- package/components/scrollbar/scroll-controls.component.d.ts +1 -1
- package/components/scrollbar/scroll-ref.directive.d.ts +2 -0
- package/components/scrollbar/scrollbar.component.d.ts +0 -1
- package/fesm2022/taiga-ui-core-classes.mjs +23 -7
- package/fesm2022/taiga-ui-core-classes.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-button.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-calendar.mjs +1 -1
- package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-carousel.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-carousel.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-cell.mjs +6 -9
- package/fesm2022/taiga-ui-core-components-cell.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-checkbox.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-checkbox.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-data-list.mjs +7 -7
- package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-icon.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-label.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-link.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-notification.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-radio.mjs +2 -2
- package/fesm2022/taiga-ui-core-components-radio.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-root.mjs +3 -3
- package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs +31 -47
- package/fesm2022/taiga-ui-core-components-scrollbar.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-textfield.mjs +6 -5
- package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-components-title.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-appearance.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-group.mjs +3 -3
- package/fesm2022/taiga-ui-core-directives-icons.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-alert.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-dialog.mjs +2 -2
- package/fesm2022/taiga-ui-core-portals-dialog.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs +105 -95
- package/fesm2022/taiga-ui-core-portals-dropdown.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-hint.mjs +26 -14
- package/fesm2022/taiga-ui-core-portals-hint.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-portals-modal.mjs +3 -3
- package/fesm2022/taiga-ui-core-portals-modal.mjs.map +1 -1
- package/fesm2022/taiga-ui-core-tokens.mjs +30 -8
- package/fesm2022/taiga-ui-core-tokens.mjs.map +1 -1
- package/package.json +19 -19
- package/portals/dropdown/dropdown-anchor.directive.d.ts +5 -1
- package/portals/dropdown/dropdown.directive.d.ts +1 -0
- package/portals/dropdown/dropdown.providers.d.ts +1 -1
- package/portals/hint/hint-anchor.directive.d.ts +5 -1
- package/portals/hint/hint.d.ts +1 -2
- package/tokens/date-format.d.ts +19 -0
- package/tokens/number-format.d.ts +18 -8
package/classes/accessors.d.ts
CHANGED
|
@@ -9,9 +9,14 @@ export declare abstract class TuiPositionAccessor extends TuiAccessor {
|
|
|
9
9
|
export declare abstract class TuiRectAccessor extends TuiAccessor {
|
|
10
10
|
abstract getClientRect(): DOMRect;
|
|
11
11
|
}
|
|
12
|
-
export declare function
|
|
12
|
+
export declare function tuiInjectAccessor<T extends TuiAccessor>(accessor: AbstractType<T>, type: string): T;
|
|
13
|
+
/** TODO: drop fallback in v6 */
|
|
14
|
+
export declare function tuiProvideAccessor<T extends TuiAccessor>(provide: AbstractType<T>, type: string, fallback?: Type<T>): FactoryProvider;
|
|
15
|
+
/** @deprecated */
|
|
13
16
|
export declare function tuiFallbackAccessor<T extends TuiAccessor>(type: string): (accessors: readonly T[] | null, fallback: Omit<T, 'type'>) => T;
|
|
17
|
+
/** @deprecated */
|
|
14
18
|
export declare function tuiPositionAccessorFor(type: string, fallback: Type<TuiPositionAccessor>): FactoryProvider;
|
|
19
|
+
/** @deprecated */
|
|
15
20
|
export declare function tuiRectAccessorFor(type: string, fallback: Type<TuiRectAccessor>): FactoryProvider;
|
|
16
21
|
export declare function tuiAsPositionAccessor(accessor: Type<TuiPositionAccessor>): ExistingProvider;
|
|
17
22
|
export declare function tuiAsRectAccessor(accessor: Type<TuiRectAccessor>): ExistingProvider;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
|
+
/** TODO: Drop and make this default in v6 */
|
|
2
3
|
export declare class TuiCellStretch {
|
|
3
|
-
protected readonly isMobile: boolean;
|
|
4
4
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiCellStretch, never>;
|
|
5
5
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiCellStretch, "[tuiCell][tuiCellStretch]", never, {}, {}, never, never, true, never>;
|
|
6
6
|
}
|
|
@@ -11,5 +11,5 @@ export declare class TuiOption<T = unknown> implements OnDestroy {
|
|
|
11
11
|
ngOnDestroy(): void;
|
|
12
12
|
protected onMouseMove(): void;
|
|
13
13
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiOption<any>, never>;
|
|
14
|
-
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiOption<any>, "button[tuiOption], a[tuiOption], label[tuiOption]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithIcons; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiCell; inputs: {}; outputs: {}; }]>;
|
|
14
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiOption<any>, "button[tuiOption], a[tuiOption], label[tuiOption]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, {}, never, never, true, [{ directive: typeof i1.TuiWithIcons; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiCell; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiCellStretch; inputs: {}; outputs: {}; }]>;
|
|
15
15
|
}
|
|
@@ -4,8 +4,8 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
export declare class TuiScrollControls implements OnInit {
|
|
5
5
|
private readonly scrollable;
|
|
6
6
|
private readonly el;
|
|
7
|
-
protected readonly nativeScrollbar: boolean;
|
|
8
7
|
protected readonly timeline: boolean;
|
|
8
|
+
protected readonly hidden: boolean;
|
|
9
9
|
protected readonly refresh$: Observable<readonly [boolean, boolean]>;
|
|
10
10
|
ngOnInit(): void;
|
|
11
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiScrollControls, never>;
|
|
@@ -4,6 +4,8 @@ export declare const SCROLL_REF_SELECTOR = "[tuiScrollRef]";
|
|
|
4
4
|
export declare const TUI_SCROLL_REF: InjectionToken<ElementRef<HTMLElement>>;
|
|
5
5
|
export declare class TuiScrollRef {
|
|
6
6
|
protected readonly nothing: undefined;
|
|
7
|
+
protected readonly options: import("./scrollbar.options").TuiScrollbarOptions;
|
|
8
|
+
protected readonly native: boolean;
|
|
7
9
|
static ɵfac: i0.ɵɵFactoryDeclaration<TuiScrollRef, never>;
|
|
8
10
|
static ɵdir: i0.ɵɵDirectiveDeclaration<TuiScrollRef, "[tuiScrollRef]", never, {}, {}, never, never, true, never>;
|
|
9
11
|
}
|
|
@@ -13,7 +13,6 @@ export declare const TUI_SCROLLABLE = "tui-scrollable";
|
|
|
13
13
|
export declare class TuiScrollbar {
|
|
14
14
|
private readonly el;
|
|
15
15
|
protected readonly options: import("./scrollbar.options").TuiScrollbarOptions;
|
|
16
|
-
protected readonly isIOS: boolean;
|
|
17
16
|
protected readonly browserScrollRef: ElementRef<HTMLElement>;
|
|
18
17
|
get delegated(): boolean;
|
|
19
18
|
protected get scrollRef(): HTMLElement;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { SkipSelf, Optional,
|
|
2
|
+
import { inject, SkipSelf, Optional, DestroyRef, Directive } from '@angular/core';
|
|
3
3
|
import { tuiProvide } from '@taiga-ui/cdk/utils/di';
|
|
4
4
|
import { coerceArray } from '@angular/cdk/coercion';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
@@ -11,19 +11,32 @@ class TuiPositionAccessor extends TuiAccessor {
|
|
|
11
11
|
}
|
|
12
12
|
class TuiRectAccessor extends TuiAccessor {
|
|
13
13
|
}
|
|
14
|
+
function tuiInjectAccessor(accessor, type) {
|
|
15
|
+
return find(inject(accessor, { self: true }), type);
|
|
16
|
+
}
|
|
17
|
+
/** TODO: drop fallback in v6 */
|
|
14
18
|
function tuiProvideAccessor(provide, type, fallback) {
|
|
15
|
-
return
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
return fallback
|
|
20
|
+
? {
|
|
21
|
+
provide,
|
|
22
|
+
deps: [[new SkipSelf(), new Optional(), provide], fallback],
|
|
23
|
+
useFactory: tuiFallbackAccessor(type),
|
|
24
|
+
}
|
|
25
|
+
: {
|
|
26
|
+
provide,
|
|
27
|
+
deps: [[new SkipSelf(), provide]],
|
|
28
|
+
useFactory: (accessors) => find(accessors, type),
|
|
29
|
+
};
|
|
20
30
|
}
|
|
31
|
+
/** @deprecated */
|
|
21
32
|
function tuiFallbackAccessor(type) {
|
|
22
33
|
return (accessors, fallback) => accessors?.find?.((accessor) => accessor !== fallback && accessor.type === type) || Object.create(fallback, { type: { value: type } });
|
|
23
34
|
}
|
|
35
|
+
/** @deprecated */
|
|
24
36
|
function tuiPositionAccessorFor(type, fallback) {
|
|
25
37
|
return tuiProvideAccessor(TuiPositionAccessor, type, fallback);
|
|
26
38
|
}
|
|
39
|
+
/** @deprecated */
|
|
27
40
|
function tuiRectAccessorFor(type, fallback) {
|
|
28
41
|
return tuiProvideAccessor(TuiRectAccessor, type, fallback);
|
|
29
42
|
}
|
|
@@ -33,6 +46,9 @@ function tuiAsPositionAccessor(accessor) {
|
|
|
33
46
|
function tuiAsRectAccessor(accessor) {
|
|
34
47
|
return tuiProvide(TuiRectAccessor, accessor, true);
|
|
35
48
|
}
|
|
49
|
+
function find(accessors, type) {
|
|
50
|
+
return [...accessors].reverse().find((accessor) => accessor.type === type);
|
|
51
|
+
}
|
|
36
52
|
|
|
37
53
|
class TuiVehicle {
|
|
38
54
|
}
|
|
@@ -70,5 +86,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
70
86
|
* Generated bundle index. Do not edit.
|
|
71
87
|
*/
|
|
72
88
|
|
|
73
|
-
export { TuiAccessor, TuiDriver, TuiDriverDirective, TuiPositionAccessor, TuiRectAccessor, TuiVehicle, tuiAsDriver, tuiAsPositionAccessor, tuiAsRectAccessor, tuiAsVehicle, tuiFallbackAccessor, tuiPositionAccessorFor, tuiProvideAccessor, tuiRectAccessorFor };
|
|
89
|
+
export { TuiAccessor, TuiDriver, TuiDriverDirective, TuiPositionAccessor, TuiRectAccessor, TuiVehicle, tuiAsDriver, tuiAsPositionAccessor, tuiAsRectAccessor, tuiAsVehicle, tuiFallbackAccessor, tuiInjectAccessor, tuiPositionAccessorFor, tuiProvideAccessor, tuiRectAccessorFor };
|
|
74
90
|
//# sourceMappingURL=taiga-ui-core-classes.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-classes.mjs","sources":["../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/classes/taiga-ui-core-classes.ts"],"sourcesContent":["import {\n type AbstractType,\n type ExistingProvider,\n type FactoryProvider,\n Optional,\n SkipSelf,\n type Type,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nexport abstract class TuiAccessor {\n public abstract readonly type: string;\n}\n\nexport abstract class TuiPositionAccessor extends TuiAccessor {\n public abstract getPosition(rect: DOMRect): TuiPoint;\n}\n\nexport abstract class TuiRectAccessor extends TuiAccessor {\n public abstract getClientRect(): DOMRect;\n}\n\nexport function tuiProvideAccessor<T extends TuiAccessor>(\n provide: AbstractType<T>,\n type: string,\n fallback
|
|
1
|
+
{"version":3,"file":"taiga-ui-core-classes.mjs","sources":["../../../projects/core/classes/accessors.ts","../../../projects/core/classes/vehicle.ts","../../../projects/core/classes/driver.ts","../../../projects/core/classes/taiga-ui-core-classes.ts"],"sourcesContent":["import {\n type AbstractType,\n type ExistingProvider,\n type FactoryProvider,\n inject,\n Optional,\n SkipSelf,\n type Type,\n} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {type TuiPoint} from '@taiga-ui/core/types';\n\nexport abstract class TuiAccessor {\n public abstract readonly type: string;\n}\n\nexport abstract class TuiPositionAccessor extends TuiAccessor {\n public abstract getPosition(rect: DOMRect): TuiPoint;\n}\n\nexport abstract class TuiRectAccessor extends TuiAccessor {\n public abstract getClientRect(): DOMRect;\n}\n\nexport function tuiInjectAccessor<T extends TuiAccessor>(\n accessor: AbstractType<T>,\n type: string,\n): T {\n return find(inject<readonly T[]>(accessor as any, {self: true}), type);\n}\n\n/** TODO: drop fallback in v6 */\nexport function tuiProvideAccessor<T extends TuiAccessor>(\n provide: AbstractType<T>,\n type: string,\n fallback?: Type<T>,\n): FactoryProvider {\n return fallback\n ? {\n provide,\n deps: [[new SkipSelf(), new Optional(), provide], fallback],\n useFactory: tuiFallbackAccessor<T>(type),\n }\n : {\n provide,\n deps: [[new SkipSelf(), provide]],\n useFactory: (accessors: readonly T[]): T => find(accessors, type),\n };\n}\n\n/** @deprecated */\nexport function tuiFallbackAccessor<T extends TuiAccessor>(\n type: string,\n): (accessors: readonly T[] | null, fallback: Omit<T, 'type'>) => T {\n return (accessors, fallback) =>\n accessors?.find?.(\n (accessor) => accessor !== fallback && accessor.type === type,\n ) || Object.create(fallback, {type: {value: type}});\n}\n\n/** @deprecated */\nexport function tuiPositionAccessorFor(\n type: string,\n fallback: Type<TuiPositionAccessor>,\n): FactoryProvider {\n return tuiProvideAccessor(TuiPositionAccessor, type, fallback);\n}\n\n/** @deprecated */\nexport function tuiRectAccessorFor(\n type: string,\n fallback: Type<TuiRectAccessor>,\n): FactoryProvider {\n return tuiProvideAccessor(TuiRectAccessor, type, fallback);\n}\n\nexport function tuiAsPositionAccessor(\n accessor: Type<TuiPositionAccessor>,\n): ExistingProvider {\n return tuiProvide(TuiPositionAccessor, accessor, true);\n}\n\nexport function tuiAsRectAccessor(accessor: Type<TuiRectAccessor>): ExistingProvider {\n return tuiProvide(TuiRectAccessor, accessor, true);\n}\n\nfunction find<T extends TuiAccessor>(accessors: readonly T[], type: string): T {\n return [...accessors].reverse().find((accessor) => accessor.type === type)!;\n}\n","import {type ExistingProvider, type Type} from '@angular/core';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\n\nexport abstract class TuiVehicle {\n public abstract readonly type: string;\n public abstract toggle(value: boolean): void;\n}\n\nexport function tuiAsVehicle(vehicle: Type<TuiVehicle>): ExistingProvider {\n return tuiProvide(TuiVehicle, vehicle, true);\n}\n","import {coerceArray} from '@angular/cdk/coercion';\nimport {\n type AfterViewInit,\n DestroyRef,\n Directive,\n type ExistingProvider,\n inject,\n type Type,\n} from '@angular/core';\nimport {takeUntilDestroyed} from '@angular/core/rxjs-interop';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {distinctUntilChanged, merge, Observable} from 'rxjs';\n\nimport {TuiVehicle} from './vehicle';\n\nexport abstract class TuiDriver extends Observable<boolean> {\n public abstract readonly type: string;\n}\n\nexport function tuiAsDriver(driver: Type<TuiDriver>): ExistingProvider {\n return tuiProvide(TuiDriver, driver, true);\n}\n\n@Directive()\nexport abstract class TuiDriverDirective implements AfterViewInit {\n public abstract type: string;\n\n private readonly destroyRef = inject(DestroyRef);\n\n private readonly drivers = coerceArray(\n inject(TuiDriver, {self: true, optional: true}) || [],\n );\n\n private readonly vehicles = coerceArray(\n inject(TuiVehicle, {self: true, optional: true}) || [],\n );\n\n public ngAfterViewInit(): void {\n const vehicle = this.vehicles.find(({type}) => type === this.type);\n\n merge(...this.drivers.filter(({type}) => type === this.type))\n .pipe(distinctUntilChanged(), takeUntilDestroyed(this.destroyRef))\n .subscribe((value) => {\n vehicle?.toggle(value);\n });\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -16,11 +16,11 @@ const [TUI_BUTTON_OPTIONS, tuiButtonOptionsProvider] = tuiCreateOptions(TUI_BUTT
|
|
|
16
16
|
|
|
17
17
|
class Styles {
|
|
18
18
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
19
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-button-5.
|
|
19
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.25", type: Styles, isStandalone: true, selector: "ng-component", exportAs: ["tui-button-5.25.0"], ngImport: i0, template: '', isInline: true, styles: ["[tuiButton]:where(*[data-tui-version=\"5.25.0\"]),[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]){--t-size: var(--tui-height-l);--t-radius: var(--tui-radius-l);--t-gap: .25rem;--t-padding: .5rem 1.25rem;--t-margin: -.25rem;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));min-block-size:fit-content;block-size:var(--t-size);justify-content:center;border-radius:var(--t-radius);padding:var(--t-padding);-webkit-user-select:none;user-select:none;cursor:pointer;font:var(--tui-typography-body-m);font-weight:700}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>img,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>img,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiAvatar],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiAvatar],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>tui-badge,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>tui-badge,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiBadge],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiBadge],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiRadio],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiRadio],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiSwitch],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiSwitch],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiCheckbox],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiCheckbox],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:after{margin:var(--t-margin)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader .t-text,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader .t-text{position:absolute}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-end=font]:after{font-size:1.5rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]{--t-size: var(--tui-height-xs);--t-radius: var(--tui-radius-xs);--t-gap: .125rem;--t-padding: 0 .375rem;--t-margin: -.125rem;font:var(--tui-typography-body-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs] tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs] tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]{--t-size: var(--tui-height-s);--t-radius: var(--tui-radius-m);--t-gap: .125rem;--t-padding: .125rem .625rem;--t-margin: -.125rem;font:var(--tui-typography-body-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s] tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s] tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-end=font]:after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m]{--t-size: var(--tui-height-m);--t-radius: var(--tui-radius-m);--t-gap: .125rem;--t-padding: .375rem 1rem;--t-margin: -.375rem;font:var(--tui-typography-body-m);font-weight:700}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-end=font]:after{font-size:1.5rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading{--tui-disabled-opacity: 1;-webkit-text-fill-color:transparent}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading>*,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading>*,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading:after{opacity:0}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading>.t-loader,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading>.t-loader{opacity:1}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]{--t-margin: 0rem !important;flex-direction:column;flex-shrink:1;block-size:auto;padding:.75rem;gap:.375rem;min-inline-size:5rem;white-space:pre-line;font:var(--tui-typography-ui-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]>*,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]>*{max-block-size:calc(var(--t-line-height) * 2);line-height:inherit!important;--t-line-height: var(--tui-lh) !important}[tuiButton]:where(*[data-tui-version=\"5.25.0\"]):is(a):not([href]),[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]):is(a):not([href]){opacity:var(--tui-disabled-opacity);pointer-events:none}[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]){gap:0;inline-size:var(--t-size);min-inline-size:var(--t-size);font-size:0!important;font-variant-ligatures:none!important;padding:0}[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start]:after{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
20
20
|
}
|
|
21
21
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: Styles, decorators: [{
|
|
22
22
|
type: Component,
|
|
23
|
-
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-button-${TUI_VERSION}`, styles: ["[tuiButton]:where(*[data-tui-version=\"5.
|
|
23
|
+
args: [{ template: '', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, exportAs: `tui-button-${TUI_VERSION}`, styles: ["[tuiButton]:where(*[data-tui-version=\"5.25.0\"]),[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]){--t-size: var(--tui-height-l);--t-radius: var(--tui-radius-l);--t-gap: .25rem;--t-padding: .5rem 1.25rem;--t-margin: -.25rem;-webkit-appearance:none;appearance:none;padding:0;border:0;background:none;font:inherit;line-height:inherit;text-decoration:none;position:relative;display:inline-flex;align-items:center;flex-shrink:0;box-sizing:border-box;white-space:nowrap;overflow:hidden;vertical-align:middle;max-inline-size:100%;gap:calc(var(--t-gap, 0rem) - 2 * var(--t-margin, 0rem));min-block-size:fit-content;block-size:var(--t-size);justify-content:center;border-radius:var(--t-radius);padding:var(--t-padding);-webkit-user-select:none;user-select:none;cursor:pointer;font:var(--tui-typography-body-m);font-weight:700}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>img,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>img,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiAvatar],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiAvatar],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>tui-badge,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>tui-badge,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiBadge],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiBadge],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiRadio],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiRadio],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiSwitch],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiSwitch],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiCheckbox],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>[tuiCheckbox],[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIcons]:after{margin:var(--t-margin)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader{position:absolute;inset:50% auto auto 50%;transform:translate(-50%,-50%)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader .t-text,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])>.t-loader .t-text{position:absolute}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-end=font]:after{font-size:1.5rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]{--t-size: var(--tui-height-xs);--t-radius: var(--tui-radius-xs);--t-gap: .125rem;--t-padding: 0 .375rem;--t-margin: -.125rem;font:var(--tui-typography-body-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs] tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs] tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=xs]:after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]{--t-size: var(--tui-height-s);--t-radius: var(--tui-radius-m);--t-gap: .125rem;--t-padding: .125rem .625rem;--t-margin: -.125rem;font:var(--tui-typography-body-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s] tui-icon,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s] tui-icon,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s]:not([tuiIconButton][data-appearance=icon],[tuiIconButton][data-appearance^=action]):after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=s][data-icon-end=font]:after{font-size:1rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m]{--t-size: var(--tui-height-m);--t-radius: var(--tui-radius-m);--t-gap: .125rem;--t-padding: .375rem 1rem;--t-margin: -.375rem;font:var(--tui-typography-body-m);font-weight:700}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-start=font]:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-start=font]:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-end=font]:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-size=m][data-icon-end=font]:after{font-size:1.5rem}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading{--tui-disabled-opacity: 1;-webkit-text-fill-color:transparent}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading>*,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading>*,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading:before,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading:before,[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading:after,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading:after{opacity:0}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])._loading>.t-loader,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])._loading>.t-loader{opacity:1}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical],[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]{--t-margin: 0rem !important;flex-direction:column;flex-shrink:1;block-size:auto;padding:.75rem;gap:.375rem;min-inline-size:5rem;white-space:pre-line;font:var(--tui-typography-ui-s)}[tuiButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]>*,[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiButtonVertical]>*{max-block-size:calc(var(--t-line-height) * 2);line-height:inherit!important;--t-line-height: var(--tui-lh) !important}[tuiButton]:where(*[data-tui-version=\"5.25.0\"]):is(a):not([href]),[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]):is(a):not([href]){opacity:var(--tui-disabled-opacity);pointer-events:none}[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"]){gap:0;inline-size:var(--t-size);min-inline-size:var(--t-size);font-size:0!important;font-variant-ligatures:none!important;padding:0}[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[tuiIconButton]:where(*[data-tui-version=\"5.25.0\"])[data-icon-start]:after{display:none}\n"] }]
|
|
24
24
|
}] });
|
|
25
25
|
class TuiButton {
|
|
26
26
|
constructor() {
|
|
@@ -389,8 +389,8 @@ class TuiCalendar extends AbstractTuiCalendar {
|
|
|
389
389
|
this.updateViewedMonth(month);
|
|
390
390
|
}
|
|
391
391
|
onDayClick(day) {
|
|
392
|
-
this.dayClick.emit(day);
|
|
393
392
|
this.value.set(day);
|
|
393
|
+
this.dayClick.emit(day);
|
|
394
394
|
}
|
|
395
395
|
onHoveredItemChange(day) {
|
|
396
396
|
this.updateHoveredDay(day);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"taiga-ui-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.ts","../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {Directive, inject, input, model} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n type TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\n\ntype Value = TuiDay | TuiDayRange | readonly TuiDay[];\n\n@Directive()\nexport abstract class AbstractTuiCalendar<T extends Value = Value> {\n public readonly month = model(TuiMonth.currentLocal());\n public readonly value = model<T | null>(null);\n\n public readonly min = input(TUI_FIRST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_FIRST_DAY,\n });\n\n public readonly max = input(TUI_LAST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_LAST_DAY,\n });\n\n public readonly disabledItemHandler = input<TuiBooleanHandler<TuiDay>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n}\n","import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({name: 'tuiCalendarSheet'})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.options.weekStart(),\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({name: 'tuiOrderWeekDays'})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.options.weekStart()),\n ...weekDays.slice(0, this.options.weekStart()),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._picking]': 'isRangePicking'},\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n public readonly month = input(TuiMonth.currentLocal());\n\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly showAdjacent = input(true);\n public readonly hoveredItem = model<TuiDay | null>(null);\n public readonly dayClick = output<TuiDay>();\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, this.hoveredItem());\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n return this.options.rangeMode && this.value() instanceof TuiDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month().monthSame(item);\n }\n\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month() | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent())) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler()(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"dayClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler();\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n public readonly value = model(TuiMonth.currentLocal());\n public readonly min = input<TuiMonth>(TUI_FIRST_DAY);\n public readonly max = input<TuiMonth>(TUI_LAST_DAY);\n public readonly yearClick = output<TuiYear>();\n\n protected append(date: TuiMonthLike): void {\n const value = this.value().append(date);\n const min = this.min();\n const max = this.max();\n\n if (min.monthSameOrAfter(value)) {\n this.updateValue(min);\n } else {\n this.updateValue(max.monthSameOrBefore(value) ? max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value().monthSame(value)) {\n return;\n }\n\n this.value.set(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value().monthSameOrBefore(min())\"\n [rightDisabled]=\"value().monthSameOrAfter(max())\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value().month] }}\n @if (min().year === max().year) {\n {{ value().formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"yearClick.emit(value())\"\n >\n {{ value().formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n\n private readonly calculatedMin = computed(() => {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n });\n\n private readonly calculatedMax = computed(() => {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n });\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode() && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n protected readonly rows = computed(() =>\n Math.ceil((this.calculatedMax() - this.calculatedMin()) / ITEMS_IN_ROW),\n );\n\n public readonly rangeMode = input(false);\n\n public readonly disabledItemHandler = input<TuiBooleanHandler<number>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n\n public readonly value = input<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n public readonly min = input(MIN_YEAR, {\n transform: (x: number | null) => x ?? MIN_YEAR,\n });\n\n public readonly max = input(MAX_YEAR, {\n transform: (x: number | null) => x ?? MAX_YEAR,\n });\n\n public readonly initialItem = input(CURRENT_YEAR, {\n transform: (x: number | null) => x ?? CURRENT_YEAR,\n });\n\n public readonly yearClick = output<number>();\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler()(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin();\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n}\n","@for (_ of '-'.repeat(rows()); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nimport {AbstractTuiCalendar} from './calendar';\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar:not([new]):not([months])',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendar),\n tuiProvide(AbstractTuiCalendar, TuiCalendar),\n ],\n host: {'(mousedown.prevent.zoneless)': '0'},\n})\nexport class TuiCalendar extends AbstractTuiCalendar {\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n public readonly minViewedMonth = input<TuiMonth | null>(TUI_FIRST_DAY);\n public readonly maxViewedMonth = input<TuiMonth | null>(TUI_LAST_DAY);\n public readonly showAdjacent = input(true);\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly initialView = input<'month' | 'year'>('month');\n public readonly hoveredItem = model<TuiDay | null>(null);\n public readonly dayClick = output<TuiDay>();\n\n protected readonly computedMinViewedMonth = computed(() => {\n const min = this.min();\n const minViewed = this.minViewedMonth() ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n });\n\n protected readonly computedMaxViewedMonth = computed(() => {\n const max = this.max();\n const maxViewed = this.maxViewedMonth() ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n });\n\n protected readonly view = linkedSignal(() => this.initialView());\n\n protected readonly syncMonthFromValue = effect(() => {\n const value = this.value();\n\n if (\n this.showAdjacent() &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month.set(value);\n }\n });\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.dayClick.emit(day);\n this.value.set(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPickerYearClick(year: number): void {\n this.view.set('month');\n this.updateViewedMonth(new TuiMonth(year, this.month().month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month().monthSame(month)) {\n return;\n }\n\n this.month.set(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","@if (view() === 'year') {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month().year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth()\"\n [min]=\"computedMinViewedMonth()\"\n [value]=\"month()\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"view.set('year')\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [hoveredItem]=\"hoveredItem()\"\n [markerHandler]=\"markerHandler()\"\n [month]=\"month()\"\n [showAdjacent]=\"showAdjacent()\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\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-core-components-calendar.mjs","sources":["../../../projects/core/components/calendar/calendar.ts","../../../projects/core/components/calendar/calendar.options.ts","../../../projects/core/components/calendar/calendar-sheet.options.ts","../../../projects/core/components/calendar/calendar-sheet.pipe.ts","../../../projects/core/components/calendar/order-week-days.pipe.ts","../../../projects/core/components/calendar/calendar-sheet.component.ts","../../../projects/core/components/calendar/calendar-sheet.template.html","../../../projects/core/components/calendar/calendar-spin.component.ts","../../../projects/core/components/calendar/calendar-spin.template.html","../../../projects/core/components/calendar/calendar-year.component.ts","../../../projects/core/components/calendar/calendar-year.template.html","../../../projects/core/components/calendar/calendar.component.ts","../../../projects/core/components/calendar/calendar.template.html","../../../projects/core/components/calendar/taiga-ui-core-components-calendar.ts"],"sourcesContent":["import {Directive, inject, input, model} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n type TuiDay,\n type TuiDayRange,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\n\ntype Value = TuiDay | TuiDayRange | readonly TuiDay[];\n\n@Directive()\nexport abstract class AbstractTuiCalendar<T extends Value = Value> {\n public readonly month = model(TuiMonth.currentLocal());\n public readonly value = model<T | null>(null);\n\n public readonly min = input(TUI_FIRST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_FIRST_DAY,\n });\n\n public readonly max = input(TUI_LAST_DAY, {\n transform: (x: TuiDay | null) => x ?? TUI_LAST_DAY,\n });\n\n public readonly disabledItemHandler = input<TuiBooleanHandler<TuiDay>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n}\n","import {type Signal, signal} from '@angular/core';\nimport {type TuiDay, TuiDayOfWeek} from '@taiga-ui/cdk/date-time';\nimport {type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarOptions {\n readonly dayType: TuiHandler<TuiDay, string>;\n readonly weekStart: Signal<0 | 1 | 2 | 3 | 4 | 5 | 6>;\n}\n\nexport const TUI_CALENDAR_DEFAULT_OPTIONS: TuiCalendarOptions = {\n dayType: (day) => (day.isWeekend ? 'weekend' : 'weekday'),\n weekStart: signal(TuiDayOfWeek.Monday),\n};\n\nexport const [TUI_CALENDAR_OPTIONS, tuiCalendarOptionsProvider] = tuiCreateOptions(\n TUI_CALENDAR_DEFAULT_OPTIONS,\n);\n","import {tuiCreateOptions} from '@taiga-ui/cdk/utils/di';\n\nexport interface TuiCalendarSheetOptions {\n readonly rangeMode: boolean;\n}\n\nexport const TUI_CALENDAR_SHEET_DEFAULT_OPTIONS: TuiCalendarSheetOptions = {\n rangeMode: false,\n};\n\nexport const [TUI_CALENDAR_SHEET_OPTIONS, tuiCalendarSheetOptionsProvider] =\n tuiCreateOptions(TUI_CALENDAR_SHEET_DEFAULT_OPTIONS);\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {DAYS_IN_WEEK, TuiDay, type TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {tuiInRange} from '@taiga-ui/cdk/utils/math';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nconst CALENDAR_ROWS_COUNT = 6;\n\n@Pipe({name: 'tuiCalendarSheet'})\nexport class TuiCalendarSheetPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n private currentMonth: TuiMonth | null = null;\n private currentSheet: ReadonlyArray<readonly TuiDay[]> = [];\n\n public transform(\n month: TuiMonth,\n showAdjacentDays = false,\n ): ReadonlyArray<readonly TuiDay[]> {\n if (this.currentMonth?.monthSame(month)) {\n return this.currentSheet;\n }\n\n const sheet: Array<readonly TuiDay[]> = [];\n\n for (let rowIndex = 0; rowIndex < CALENDAR_ROWS_COUNT; rowIndex++) {\n const row: TuiDay[] = [];\n\n for (let colIndex = 0; colIndex < DAYS_IN_WEEK; colIndex++) {\n const day = getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek: this.options.weekStart(),\n });\n\n const isPrevMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year < relativeToMonth.year || day.month < relativeToMonth.month;\n\n const isNextMonthDay = (day: TuiDay, relativeToMonth = month): boolean =>\n day.year > relativeToMonth.year || day.month > relativeToMonth.month;\n\n if (isPrevMonthDay(day) && !showAdjacentDays) {\n continue;\n }\n\n if (isNextMonthDay(day) && !showAdjacentDays) {\n break;\n }\n\n row.push(day);\n }\n\n sheet.push(row);\n }\n\n this.currentSheet = sheet.filter((row) => row.length);\n this.currentMonth = month;\n\n return this.currentSheet;\n }\n}\n\n/**\n * Computes day of week offset of the beginning of the month\n */\nfunction getMonthStartDaysOffset(\n month: TuiMonth,\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6,\n): number {\n const startMonthOffsetFromSunday = new Date(month.year, month.month, 1).getDay();\n\n return startMonthOffsetFromSunday >= firstDayOfWeek\n ? startMonthOffsetFromSunday - firstDayOfWeek\n : DAYS_IN_WEEK - (firstDayOfWeek - startMonthOffsetFromSunday);\n}\n\n/**\n * Calculated day on a calendar grid\n * @return resulting day on these coordinates (could exceed passed month)\n */\nfunction getDayFromMonthRowCol({\n month,\n rowIndex,\n colIndex,\n firstDayOfWeek,\n}: {\n /**\n * column in a calendar\n */\n colIndex: number;\n /**\n * first day of the week index (Sunday - 0, Saturday - 6)\n */\n firstDayOfWeek: 0 | 1 | 2 | 3 | 4 | 5 | 6;\n month: TuiMonth;\n /**\n * row in a calendar\n */\n rowIndex: number;\n}): TuiDay {\n ngDevMode && console.assert(Number.isInteger(rowIndex));\n ngDevMode && console.assert(tuiInRange(rowIndex, 0, 6));\n ngDevMode && console.assert(Number.isInteger(colIndex));\n ngDevMode && console.assert(tuiInRange(colIndex, 0, DAYS_IN_WEEK));\n\n let day =\n rowIndex * DAYS_IN_WEEK +\n colIndex -\n getMonthStartDaysOffset(month, firstDayOfWeek) +\n 1;\n\n if (day > month.daysCount) {\n day -= month.daysCount;\n month = month.append({month: 1});\n }\n\n if (day <= 0) {\n month = month.append({month: -1});\n day = month.daysCount + day;\n }\n\n return new TuiDay(month.year, month.month, day);\n}\n","import {inject, Pipe, type PipeTransform} from '@angular/core';\nimport {map, type Observable} from 'rxjs';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\n\nfunction convertToSundayFirstWeekFormat(\n weekDaysNames: readonly string[],\n): readonly string[] {\n const sundayIndex = weekDaysNames.length - 1;\n\n return [weekDaysNames[sundayIndex] || '', ...weekDaysNames.slice(0, sundayIndex)];\n}\n\n@Pipe({name: 'tuiOrderWeekDays'})\nexport class TuiOrderWeekDaysPipe implements PipeTransform {\n private readonly options = inject(TUI_CALENDAR_OPTIONS);\n\n public transform(\n mondayFirstWeekDays$: Observable<readonly string[]>,\n ): Observable<readonly string[]> {\n return mondayFirstWeekDays$.pipe(\n map(convertToSundayFirstWeekFormat),\n map((weekDays) => [\n ...weekDays.slice(this.options.weekStart()),\n ...weekDays.slice(0, this.options.weekStart()),\n ]),\n );\n }\n}\n","import {AsyncPipe} from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {toObservable} from '@angular/core/rxjs-interop';\nimport {TUI_FALSE_HANDLER} from '@taiga-ui/cdk/constants';\nimport {TuiDay, TuiDayRange, TuiMonth} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiHandler} from '@taiga-ui/cdk/types';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TUI_SHORT_WEEK_DAYS} from '@taiga-ui/core/tokens';\n\nimport {TUI_CALENDAR_OPTIONS} from './calendar.options';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSheetPipe} from './calendar-sheet.pipe';\nimport {TuiOrderWeekDaysPipe} from './order-week-days.pipe';\n\nexport type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;\n\n@Component({\n selector: 'tui-calendar-sheet',\n imports: [\n AsyncPipe,\n TuiCalendarSheetPipe,\n TuiHovered,\n TuiMapperPipe,\n TuiOrderWeekDaysPipe,\n ],\n templateUrl: './calendar-sheet.template.html',\n styleUrl: './calendar-sheet.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {'[class._picking]': 'isRangePicking'},\n})\nexport class TuiCalendarSheet {\n private readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n private readonly today = TuiDay.currentLocal();\n\n protected readonly unorderedWeekDays$ = toObservable(inject(TUI_SHORT_WEEK_DAYS));\n protected readonly dayType = inject(TUI_CALENDAR_OPTIONS).dayType;\n\n public readonly month = input(TuiMonth.currentLocal());\n\n public readonly disabledItemHandler =\n input<TuiBooleanHandler<TuiDay>>(TUI_FALSE_HANDLER);\n\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly value = input<TuiDay | TuiDayRange | readonly TuiDay[] | null>(null);\n public readonly showAdjacent = input(true);\n public readonly hoveredItem = model<TuiDay | null>(null);\n public readonly dayClick = output<TuiDay>();\n\n public onItemHovered(item: TuiDay | false): void {\n this.updateHoveredItem(item || null);\n }\n\n public getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n\n if (!value) {\n return null;\n }\n\n if (value instanceof TuiDay && !this.computedRangeMode) {\n return value.daySame(item) ? 'active' : null;\n }\n\n if (value instanceof TuiDayRange && value.isSingleDay) {\n return value.from.daySame(item) ? 'active' : null;\n }\n\n if (!(value instanceof TuiDay) && !(value instanceof TuiDayRange)) {\n return value.find((day) => day.daySame(item)) ? 'active' : null;\n }\n\n const range = this.getRange(value, this.hoveredItem());\n\n if (range.isSingleDay && range.from.daySame(item)) {\n return 'active';\n }\n\n if (range.from.daySame(item)) {\n return 'start';\n }\n\n if (range.to.daySame(item)) {\n return 'end';\n }\n\n return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;\n }\n\n protected get computedRangeMode(): boolean {\n return this.options.rangeMode;\n }\n\n protected get isRangePicking(): boolean {\n return this.options.rangeMode && this.value() instanceof TuiDay;\n }\n\n protected readonly toMarkers = (\n day: TuiDay,\n today: boolean,\n range: string | null,\n markerHandler: TuiMarkerHandler | null,\n ): [string, string] | [string] | null => {\n if (today || ['active', 'end', 'start'].includes(range || '')) {\n return null;\n }\n\n const markers = markerHandler?.(day);\n\n return markers?.length ? markers : null;\n };\n\n protected itemIsToday(item: TuiDay): boolean {\n return this.today.daySame(item);\n }\n\n protected itemIsUnavailable(item: TuiDay): boolean {\n return !this.month().monthSame(item);\n }\n\n private getRange(\n value: TuiDay | TuiDayRange,\n hoveredItem: TuiDay | null,\n ): TuiDayRange {\n if (value instanceof TuiDay) {\n return TuiDayRange.sort(value, hoveredItem ?? value);\n }\n\n return value.isSingleDay\n ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)\n : value;\n }\n\n private updateHoveredItem(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","<div class=\"t-row t-row_weekday\">\n @for (day of unorderedWeekDays$ | tuiOrderWeekDays | async; track day) {\n <div\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n }\n</div>\n@let sheet = month() | tuiCalendarSheet: true;\n<div>\n @for (_ of '-'.repeat(sheet.length); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(sheet[rowIndex]?.length ?? 0); track $index) {\n @let item = sheet[rowIndex]?.[$index];\n @if (item && (!itemIsUnavailable(item) || showAdjacent())) {\n <div\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayType\"\n [class.t-cell_disabled]=\"disabledItemHandler()(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"dayClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n @if (\n item | tuiMapper: toMarkers : itemIsToday(item) : getItemRange(item) : markerHandler();\n as markers\n ) {\n <div class=\"t-dots\">\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n @if (markers.length > 1) {\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n }\n </div>\n }\n </div>\n }\n }\n </div>\n }\n</div>\n","import {\n ChangeDetectionStrategy,\n Component,\n inject,\n input,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TuiMonth,\n type TuiMonthLike,\n type TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiLink} from '@taiga-ui/core/components/link';\nimport {TuiSpinButton} from '@taiga-ui/core/components/spin-button';\nimport {TUI_MONTHS} from '@taiga-ui/core/tokens';\n\n@Component({\n selector: 'tui-calendar-spin',\n imports: [TuiLink, TuiSpinButton],\n templateUrl: './calendar-spin.template.html',\n styleUrl: './calendar-spin.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class TuiCalendarSpin {\n protected readonly months = inject(TUI_MONTHS);\n\n public readonly value = model(TuiMonth.currentLocal());\n public readonly min = input<TuiMonth>(TUI_FIRST_DAY);\n public readonly max = input<TuiMonth>(TUI_LAST_DAY);\n public readonly yearClick = output<TuiYear>();\n\n protected append(date: TuiMonthLike): void {\n const value = this.value().append(date);\n const min = this.min();\n const max = this.max();\n\n if (min.monthSameOrAfter(value)) {\n this.updateValue(min);\n } else {\n this.updateValue(max.monthSameOrBefore(value) ? max : value);\n }\n }\n\n private updateValue(value: TuiMonth): void {\n if (this.value().monthSame(value)) {\n return;\n }\n\n this.value.set(value);\n }\n}\n","<tui-spin-button\n [focusable]=\"false\"\n [leftDisabled]=\"value().monthSameOrBefore(min())\"\n [rightDisabled]=\"value().monthSameOrAfter(max())\"\n (leftClick)=\"append({month: -1})\"\n (rightClick)=\"append({month: 1})\"\n>\n {{ months()[value().month] }}\n @if (min().year === max().year) {\n {{ value().formattedYear }}\n } @else {\n <button\n tabIndex=\"-1\"\n tuiLink\n type=\"button\"\n (click)=\"yearClick.emit(value())\"\n >\n {{ value().formattedYear }}\n </button>\n }\n</tui-spin-button>\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n inject,\n input,\n output,\n signal,\n} from '@angular/core';\nimport {\n MAX_YEAR,\n MIN_YEAR,\n TuiDay,\n type TuiDayRange,\n TuiMonth,\n TuiMonthRange,\n TuiYear,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiHovered} from '@taiga-ui/cdk/directives/hovered';\nimport {type TuiBooleanHandler} from '@taiga-ui/cdk/types';\nimport {tuiIsNumber} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollIntoView} from '@taiga-ui/core/components/scrollbar';\nimport {TUI_ITEMS_HANDLERS} from '@taiga-ui/core/directives/items-handlers';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nconst LIMIT = 100;\nconst ITEMS_IN_ROW = 4;\nconst CURRENT_YEAR = TuiMonth.currentLocal().year;\n\n@Component({\n selector: 'tui-calendar-year',\n imports: [TuiHovered, TuiScrollIntoView],\n templateUrl: './calendar-year.template.html',\n styleUrl: './calendar-year.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [tuiAsAuxiliary(TuiCalendarYear)],\n host: {'[class._picking]': 'isRangePicking()'},\n})\nexport class TuiCalendarYear {\n private readonly hoveredItem = signal<number | null>(null);\n\n private readonly calculatedMin = computed(() => {\n const initial = this.initialItem() - LIMIT;\n const min = this.min() ?? MIN_YEAR;\n\n return min > initial ? min : initial;\n });\n\n private readonly calculatedMax = computed(() => {\n const initial = this.initialItem() + LIMIT;\n const max = this.max() ?? MAX_YEAR;\n\n return max < initial ? max + 1 : initial;\n });\n\n protected readonly isRangePicking = computed(\n (x = this.value()) =>\n this.rangeMode() && (x instanceof TuiDay || x instanceof TuiMonth),\n );\n\n protected readonly rows = computed(() =>\n Math.ceil((this.calculatedMax() - this.calculatedMin()) / ITEMS_IN_ROW),\n );\n\n public readonly rangeMode = input(false);\n\n public readonly disabledItemHandler = input<TuiBooleanHandler<number>>(\n inject(TUI_ITEMS_HANDLERS).disabledItemHandler(),\n );\n\n public readonly value = input<\n TuiDayRange | TuiMonthRange | TuiYear | number | readonly TuiDay[] | null\n >(null);\n\n public readonly min = input(MIN_YEAR, {\n transform: (x: number | null) => x ?? MIN_YEAR,\n });\n\n public readonly max = input(MAX_YEAR, {\n transform: (x: number | null) => x ?? MAX_YEAR,\n });\n\n public readonly initialItem = input(CURRENT_YEAR, {\n transform: (x: number | null) => x ?? CURRENT_YEAR,\n });\n\n public readonly yearClick = output<number>();\n\n public isDisabled(item: number): boolean {\n return (\n (this.max() && this.max() < item) ||\n (this.min() && this.min() > item) ||\n this.disabledItemHandler()(item)\n );\n }\n\n public getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null {\n const value = this.value();\n const hoveredItem = this.hoveredItem();\n\n if (value instanceof TuiYear && value.year === item) {\n return 'active';\n }\n\n if (tuiIsNumber(value)) {\n return value === item ? 'active' : null;\n }\n\n if (!(value instanceof TuiMonthRange) && !(value instanceof TuiYear)) {\n return value?.find((day) => day.year === item) ? 'active' : null;\n }\n\n const hovered = this.isRangePicking() ? hoveredItem : null;\n const from = 'from' in value ? value.from?.year : value.year;\n const to = 'from' in value ? value.to.year : value.year;\n const min = Math.min(from, hovered ?? to);\n const max = Math.max(from, hovered ?? to);\n\n if (min === max && from === to && from === item) {\n return 'active';\n }\n\n if (min === item) {\n return 'start';\n }\n\n if (max === item) {\n return 'end';\n }\n\n return min < item && item < max ? 'middle' : null;\n }\n\n public onItemHovered(hovered: boolean, item: number): void {\n this.hoveredItem.set(hovered ? item : null);\n }\n\n protected scrollItemIntoView(item: number): boolean {\n return this.initialItem() === item;\n }\n\n protected getItem(rowIndex: number, colIndex: number): number {\n return rowIndex * ITEMS_IN_ROW + colIndex + this.calculatedMin();\n }\n\n protected itemIsToday(item: number): boolean {\n return CURRENT_YEAR === item;\n }\n}\n","@for (_ of '-'.repeat(rows()); track $index) {\n @let rowIndex = $index;\n <div\n automation-id=\"tui-calendar-year__row\"\n class=\"t-row\"\n >\n @for (_ of '-'.repeat(4); track $index) {\n @let item = getItem(rowIndex, $index);\n <div\n automation-id=\"tui-calendar-year__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"isDisabled(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [tuiScrollIntoView]=\"scrollItemIntoView(item)\"\n (click)=\"yearClick.emit(item)\"\n (tuiHoveredChange)=\"onItemHovered($event, item)\"\n >\n {{ item }}\n </div>\n }\n </div>\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n effect,\n inject,\n input,\n linkedSignal,\n model,\n output,\n} from '@angular/core';\nimport {\n TUI_FIRST_DAY,\n TUI_LAST_DAY,\n TUI_LAST_DISPLAYED_DAY,\n TuiDay,\n TuiMonth,\n} from '@taiga-ui/cdk/date-time';\nimport {TuiMapperPipe} from '@taiga-ui/cdk/pipes/mapper';\nimport {type TuiBooleanHandler, type TuiMapper} from '@taiga-ui/cdk/types';\nimport {tuiProvide} from '@taiga-ui/cdk/utils/di';\nimport {tuiNullableSame} from '@taiga-ui/cdk/utils/miscellaneous';\nimport {TuiScrollbar} from '@taiga-ui/core/components/scrollbar';\nimport {tuiAsAuxiliary} from '@taiga-ui/core/tokens';\n\nimport {AbstractTuiCalendar} from './calendar';\nimport {TuiCalendarSheet, type TuiMarkerHandler} from './calendar-sheet.component';\nimport {TUI_CALENDAR_SHEET_OPTIONS} from './calendar-sheet.options';\nimport {TuiCalendarSpin} from './calendar-spin.component';\nimport {TuiCalendarYear} from './calendar-year.component';\n\n@Component({\n selector: 'tui-calendar:not([new]):not([months])',\n imports: [\n TuiCalendarSheet,\n TuiCalendarSpin,\n TuiCalendarYear,\n TuiMapperPipe,\n TuiScrollbar,\n ],\n templateUrl: './calendar.template.html',\n styleUrl: './calendar.style.less',\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [\n tuiAsAuxiliary(TuiCalendar),\n tuiProvide(AbstractTuiCalendar, TuiCalendar),\n ],\n host: {'(mousedown.prevent.zoneless)': '0'},\n})\nexport class TuiCalendar extends AbstractTuiCalendar {\n protected readonly options = inject(TUI_CALENDAR_SHEET_OPTIONS);\n\n public readonly minViewedMonth = input<TuiMonth | null>(TUI_FIRST_DAY);\n public readonly maxViewedMonth = input<TuiMonth | null>(TUI_LAST_DAY);\n public readonly showAdjacent = input(true);\n public readonly markerHandler = input<TuiMarkerHandler | null>(null);\n public readonly initialView = input<'month' | 'year'>('month');\n public readonly hoveredItem = model<TuiDay | null>(null);\n public readonly dayClick = output<TuiDay>();\n\n protected readonly computedMinViewedMonth = computed(() => {\n const min = this.min();\n const minViewed = this.minViewedMonth() ?? TUI_FIRST_DAY;\n\n return minViewed.monthSameOrAfter(min) ? minViewed : min;\n });\n\n protected readonly computedMaxViewedMonth = computed(() => {\n const max = this.max();\n const maxViewed = this.maxViewedMonth() ?? TUI_LAST_DAY;\n\n return maxViewed.monthSameOrBefore(max) ? maxViewed : max;\n });\n\n protected readonly view = linkedSignal(() => this.initialView());\n\n protected readonly syncMonthFromValue = effect(() => {\n const value = this.value();\n\n if (\n this.showAdjacent() &&\n value instanceof TuiDay &&\n value.daySameOrBefore(TUI_LAST_DISPLAYED_DAY)\n ) {\n this.month.set(value);\n }\n });\n\n public onPaginationValueChange(month: TuiMonth): void {\n this.updateViewedMonth(month);\n }\n\n public onDayClick(day: TuiDay): void {\n this.value.set(day);\n this.dayClick.emit(day);\n }\n\n public onHoveredItemChange(day: TuiDay | null): void {\n this.updateHoveredDay(day);\n }\n\n protected readonly disabledItemHandlerMapper: TuiMapper<\n [TuiBooleanHandler<TuiDay>, TuiDay, TuiDay],\n TuiBooleanHandler<TuiDay>\n > = (disabledItemHandler, min, max) => (item) =>\n item.dayBefore(min) || item.dayAfter(max) || disabledItemHandler(item);\n\n protected onPickerYearClick(year: number): void {\n this.view.set('month');\n this.updateViewedMonth(new TuiMonth(year, this.month().month));\n }\n\n private updateViewedMonth(month: TuiMonth): void {\n if (this.month().monthSame(month)) {\n return;\n }\n\n this.month.set(month);\n }\n\n private updateHoveredDay(day: TuiDay | null): void {\n if (tuiNullableSame(this.hoveredItem(), day, (a, b) => a.daySame(b))) {\n return;\n }\n\n this.hoveredItem.set(day);\n }\n}\n","@if (view() === 'year') {\n <tui-scrollbar\n automation-id=\"tui-calendar__scrollbar\"\n class=\"t-scrollbar\"\n >\n <tui-calendar-year\n automation-id=\"tui-calendar__year\"\n [initialItem]=\"month().year\"\n [max]=\"max().year\"\n [min]=\"min().year\"\n [rangeMode]=\"options.rangeMode\"\n [value]=\"value()\"\n (yearClick)=\"onPickerYearClick($event)\"\n />\n </tui-scrollbar>\n} @else {\n <tui-calendar-spin\n automation-id=\"tui-calendar__pagination\"\n class=\"t-pagination\"\n [max]=\"computedMaxViewedMonth()\"\n [min]=\"computedMinViewedMonth()\"\n [value]=\"month()\"\n (valueChange)=\"onPaginationValueChange($event)\"\n (yearClick)=\"view.set('year')\"\n />\n <tui-calendar-sheet\n automation-id=\"tui-calendar__calendar\"\n [disabledItemHandler]=\"disabledItemHandler() | tuiMapper: disabledItemHandlerMapper : min() : max()\"\n [hoveredItem]=\"hoveredItem()\"\n [markerHandler]=\"markerHandler()\"\n [month]=\"month()\"\n [showAdjacent]=\"showAdjacent()\"\n [value]=\"value()\"\n (dayClick)=\"onDayClick($event)\"\n (hoveredItemChange)=\"onHoveredItemChange($event)\"\n />\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;MAcsB,mBAAmB,CAAA;AADzC,IAAA,WAAA,GAAA;QAEoB,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAW,IAAI,CAAC;AAE7B,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,aAAa,EAAE;YACvC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,aAAa;AACtD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,YAAY,EAAE;YACtC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,YAAY;AACrD,SAAA,CAAC;QAEc,IAAA,CAAA,mBAAmB,GAAG,KAAK,CACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,CACnD;AACJ,IAAA;+GAfqB,mBAAmB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAnB,mBAAmB,EAAA,YAAA,EAAA,IAAA,EAAA,MAAA,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,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,KAAA,EAAA,aAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAnB,mBAAmB,EAAA,UAAA,EAAA,CAAA;kBADxC;;;ACHM,MAAM,4BAA4B,GAAuB;AAC5D,IAAA,OAAO,EAAE,CAAC,GAAG,MAAM,GAAG,CAAC,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AACzD,IAAA,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;;AAGnC,MAAM,CAAC,oBAAoB,EAAE,0BAA0B,CAAC,GAAG,gBAAgB,CAC9E,4BAA4B;;ACVzB,MAAM,kCAAkC,GAA4B;AACvE,IAAA,SAAS,EAAE,KAAK;;AAGb,MAAM,CAAC,0BAA0B,EAAE,+BAA+B,CAAC,GACtE,gBAAgB,CAAC,kCAAkC;;ACLvD,MAAM,mBAAmB,GAAG,CAAC;MAGhB,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC/C,IAAA,CAAA,YAAY,GAAoB,IAAI;QACpC,IAAA,CAAA,YAAY,GAAqC,EAAE;AAgD9D,IAAA;AA9CU,IAAA,SAAS,CACZ,KAAe,EACf,gBAAgB,GAAG,KAAK,EAAA;QAExB,IAAI,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,KAAK,CAAC,EAAE;YACrC,OAAO,IAAI,CAAC,YAAY;QAC5B;QAEA,MAAM,KAAK,GAA6B,EAAE;AAE1C,QAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,mBAAmB,EAAE,QAAQ,EAAE,EAAE;YAC/D,MAAM,GAAG,GAAa,EAAE;AAExB,YAAA,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,YAAY,EAAE,QAAQ,EAAE,EAAE;gBACxD,MAAM,GAAG,GAAG,qBAAqB,CAAC;oBAC9B,KAAK;oBACL,QAAQ;oBACR,QAAQ;AACR,oBAAA,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;AAC3C,iBAAA,CAAC;gBAEF,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,eAAe,GAAG,KAAK,KACxD,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK;gBAExE,MAAM,cAAc,GAAG,CAAC,GAAW,EAAE,eAAe,GAAG,KAAK,KACxD,GAAG,CAAC,IAAI,GAAG,eAAe,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC,KAAK;gBAExE,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC1C;gBACJ;gBAEA,IAAI,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC1C;gBACJ;AAEA,gBAAA,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC;YACjB;AAEA,YAAA,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;QACnB;AAEA,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC;AACrD,QAAA,IAAI,CAAC,YAAY,GAAG,KAAK;QAEzB,OAAO,IAAI,CAAC,YAAY;IAC5B;+GAlDS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;mBAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC;;AAsDhC;;AAEG;AACH,SAAS,uBAAuB,CAC5B,KAAe,EACf,cAAyC,EAAA;AAEzC,IAAA,MAAM,0BAA0B,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE;IAEhF,OAAO,0BAA0B,IAAI;UAC/B,0BAA0B,GAAG;UAC7B,YAAY,IAAI,cAAc,GAAG,0BAA0B,CAAC;AACtE;AAEA;;;AAGG;AACH,SAAS,qBAAqB,CAAC,EAC3B,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,cAAc,GAejB,EAAA;AACG,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;AACvD,IAAA,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE,YAAY,CAAC,CAAC;AAElE,IAAA,IAAI,GAAG,GACH,QAAQ,GAAG,YAAY;QACvB,QAAQ;AACR,QAAA,uBAAuB,CAAC,KAAK,EAAE,cAAc,CAAC;AAC9C,QAAA,CAAC;AAEL,IAAA,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,EAAE;AACvB,QAAA,GAAG,IAAI,KAAK,CAAC,SAAS;QACtB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,EAAC,CAAC;IACpC;AAEA,IAAA,IAAI,GAAG,IAAI,CAAC,EAAE;AACV,QAAA,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,EAAC,KAAK,EAAE,CAAC,CAAC,EAAC,CAAC;AACjC,QAAA,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,GAAG;IAC/B;AAEA,IAAA,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC;AACnD;;ACrHA,SAAS,8BAA8B,CACnC,aAAgC,EAAA;AAEhC,IAAA,MAAM,WAAW,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC;AAE5C,IAAA,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;AACrF;MAGa,oBAAoB,CAAA;AADjC,IAAA,WAAA,GAAA;AAEqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC;AAa1D,IAAA;AAXU,IAAA,SAAS,CACZ,oBAAmD,EAAA;AAEnD,QAAA,OAAO,oBAAoB,CAAC,IAAI,CAC5B,GAAG,CAAC,8BAA8B,CAAC,EACnC,GAAG,CAAC,CAAC,QAAQ,KAAK;YACd,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AAC3C,YAAA,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;AACjD,SAAA,CAAC,CACL;IACL;+GAbS,oBAAoB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA;6GAApB,oBAAoB,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,CAAA;;4FAApB,oBAAoB,EAAA,UAAA,EAAA,CAAA;kBADhC,IAAI;mBAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC;;;MC0BnB,gBAAgB,CAAA;AAd7B,IAAA,WAAA,GAAA;AAeqB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAC5C,QAAA,IAAA,CAAA,KAAK,GAAG,MAAM,CAAC,YAAY,EAAE;QAE3B,IAAA,CAAA,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;AAC9D,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO;QAEjD,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AAEtC,QAAA,IAAA,CAAA,mBAAmB,GAC/B,KAAK,CAA4B,iBAAiB,CAAC;AAEvC,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAkD,IAAI,CAAC;AACpE,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;QACxC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU;QAkDxB,IAAA,CAAA,SAAS,GAAG,CAC3B,GAAW,EACX,KAAc,EACd,KAAoB,EACpB,aAAsC,KACF;AACpC,YAAA,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE;AAC3D,gBAAA,OAAO,IAAI;YACf;AAEA,YAAA,MAAM,OAAO,GAAG,aAAa,GAAG,GAAG,CAAC;YAEpC,OAAO,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI;AAC3C,QAAA,CAAC;AA8BJ,IAAA;AA3FU,IAAA,aAAa,CAAC,IAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,IAAI,CAAC;IACxC;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;QAE1B,IAAI,CAAC,KAAK,EAAE;AACR,YAAA,OAAO,IAAI;QACf;QAEA,IAAI,KAAK,YAAY,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;AACpD,YAAA,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QAChD;QAEA,IAAI,KAAK,YAAY,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;AACnD,YAAA,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QACrD;AAEA,QAAA,IAAI,EAAE,KAAK,YAAY,MAAM,CAAC,IAAI,EAAE,KAAK,YAAY,WAAW,CAAC,EAAE;YAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,QAAQ,GAAG,IAAI;QACnE;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;AAEtD,QAAA,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC/C,YAAA,OAAO,QAAQ;QACnB;QAEA,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AAC1B,YAAA,OAAO,OAAO;QAClB;QAEA,IAAI,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;AACxB,YAAA,OAAO,KAAK;QAChB;QAEA,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;IAClF;AAEA,IAAA,IAAc,iBAAiB,GAAA;AAC3B,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS;IACjC;AAEA,IAAA,IAAc,cAAc,GAAA;AACxB,QAAA,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,YAAY,MAAM;IACnE;AAiBU,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;IACnC;AAEU,IAAA,iBAAiB,CAAC,IAAY,EAAA;QACpC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IACxC;IAEQ,QAAQ,CACZ,KAA2B,EAC3B,WAA0B,EAAA;AAE1B,QAAA,IAAI,KAAK,YAAY,MAAM,EAAE;YACzB,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,IAAI,KAAK,CAAC;QACxD;QAEA,OAAO,KAAK,CAAC;AACT,cAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,IAAI,KAAK,CAAC,EAAE;cACpD,KAAK;IACf;AAEQ,IAAA,iBAAiB,CAAC,GAAkB,EAAA;QACxC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B;+GA5GS,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;mGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,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,mBAAA,EAAA,EAAA,iBAAA,EAAA,qBAAA,EAAA,UAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,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,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,gBAAA,EAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECvC7B,gzEAsDA,EAAA,MAAA,EAAA,CAAA,20IAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,ED1BQ,SAAS,EAAA,IAAA,EAAA,OAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACT,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACpB,UAAU,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACV,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACb,oBAAoB,EAAA,IAAA,EAAA,kBAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAOf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAd5B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,oBAAoB,EAAA,OAAA,EACrB;wBACL,SAAS;wBACT,oBAAoB;wBACpB,UAAU;wBACV,aAAa;wBACb,oBAAoB;qBACvB,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,IAAA,EACzC,EAAC,kBAAkB,EAAE,gBAAgB,EAAC,EAAA,QAAA,EAAA,gzEAAA,EAAA,MAAA,EAAA,CAAA,20IAAA,CAAA,EAAA;;;MEXnC,eAAe,CAAA;AAP5B,IAAA,WAAA,GAAA;AAQuB,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC;QAE9B,IAAA,CAAA,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;AACtC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAW,aAAa,CAAC;AACpC,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAW,YAAY,CAAC;QACnC,IAAA,CAAA,SAAS,GAAG,MAAM,EAAW;AAqBhD,IAAA;AAnBa,IAAA,MAAM,CAAC,IAAkB,EAAA;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;AACvC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AACtB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;AAEtB,QAAA,IAAI,GAAG,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE;AAC7B,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QACzB;aAAO;AACH,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC;QAChE;IACJ;AAEQ,IAAA,WAAW,CAAC,KAAe,EAAA;QAC/B,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC/B;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;+GA1BS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,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,EAAA,OAAA,EAAA,EAAA,KAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC1B5B,umBAqBA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDAc,OAAO,wEAAE,aAAa,EAAA,QAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,eAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,EAAA,YAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAKvB,eAAe,EAAA,UAAA,EAAA,CAAA;kBAP3B,SAAS;+BACI,mBAAmB,EAAA,OAAA,EACpB,CAAC,OAAO,EAAE,aAAa,CAAC,EAAA,eAAA,EAGhB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,umBAAA,EAAA,MAAA,EAAA,CAAA,wBAAA,CAAA,EAAA;;;AECnD,MAAM,KAAK,GAAG,GAAG;AACjB,MAAM,YAAY,GAAG,CAAC;AACtB,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC,IAAI;MAWpC,eAAe,CAAA;AAT5B,IAAA,WAAA,GAAA;AAUqB,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAgB,IAAI,CAAC;AAEzC,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;YAElC,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,OAAO;AACxC,QAAA,CAAC,CAAC;AAEe,QAAA,IAAA,CAAA,aAAa,GAAG,QAAQ,CAAC,MAAK;YAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,KAAK;YAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,QAAQ;AAElC,YAAA,OAAO,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,GAAG,OAAO;AAC5C,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,cAAc,GAAG,QAAQ,CACxC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,KACb,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,YAAY,MAAM,IAAI,CAAC,YAAY,QAAQ,CAAC,CACzE;QAEkB,IAAA,CAAA,IAAI,GAAG,QAAQ,CAAC,MAC/B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,YAAY,CAAC,CAC1E;AAEe,QAAA,IAAA,CAAA,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;QAExB,IAAA,CAAA,mBAAmB,GAAG,KAAK,CACvC,MAAM,CAAC,kBAAkB,CAAC,CAAC,mBAAmB,EAAE,CACnD;AAEe,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAE3B,IAAI,CAAC;AAES,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,QAAQ;AACjD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE;YAClC,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,QAAQ;AACjD,SAAA,CAAC;AAEc,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAC,YAAY,EAAE;YAC9C,SAAS,EAAE,CAAC,CAAgB,KAAK,CAAC,IAAI,YAAY;AACrD,SAAA,CAAC;QAEc,IAAA,CAAA,SAAS,GAAG,MAAM,EAAU;AA8D/C,IAAA;AA5DU,IAAA,UAAU,CAAC,IAAY,EAAA;AAC1B,QAAA,QACI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;aAC/B,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;AACjC,YAAA,IAAI,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC;IAExC;AAEO,IAAA,YAAY,CAAC,IAAY,EAAA;AAC5B,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;AAC1B,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE;QAEtC,IAAI,KAAK,YAAY,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE;AACjD,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;YACpB,OAAO,KAAK,KAAK,IAAI,GAAG,QAAQ,GAAG,IAAI;QAC3C;AAEA,QAAA,IAAI,EAAE,KAAK,YAAY,aAAa,CAAC,IAAI,EAAE,KAAK,YAAY,OAAO,CAAC,EAAE;YAClE,OAAO,KAAK,EAAE,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,IAAI;QACpE;AAEA,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,WAAW,GAAG,IAAI;AAC1D,QAAA,MAAM,IAAI,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,CAAC,IAAI;AAC5D,QAAA,MAAM,EAAE,GAAG,MAAM,IAAI,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI;AACvD,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;AACzC,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC;AAEzC,QAAA,IAAI,GAAG,KAAK,GAAG,IAAI,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,IAAI,EAAE;AAC7C,YAAA,OAAO,QAAQ;QACnB;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACd,YAAA,OAAO,OAAO;QAClB;AAEA,QAAA,IAAI,GAAG,KAAK,IAAI,EAAE;AACd,YAAA,OAAO,KAAK;QAChB;AAEA,QAAA,OAAO,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,QAAQ,GAAG,IAAI;IACrD;IAEO,aAAa,CAAC,OAAgB,EAAE,IAAY,EAAA;AAC/C,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC;IAC/C;AAEU,IAAA,kBAAkB,CAAC,IAAY,EAAA;AACrC,QAAA,OAAO,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI;IACtC;IAEU,OAAO,CAAC,QAAgB,EAAE,QAAgB,EAAA;QAChD,OAAO,QAAQ,GAAG,YAAY,GAAG,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;IACpE;AAEU,IAAA,WAAW,CAAC,IAAY,EAAA;QAC9B,OAAO,YAAY,KAAK,IAAI;IAChC;+GA7GS,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAf,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,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,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,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,gBAAA,EAAA,kBAAA,EAAA,EAAA,EAAA,SAAA,EAHb,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECnChD,s0BAuBA,EAAA,MAAA,EAAA,CAAA,07HAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDQc,UAAU,EAAA,QAAA,EAAA,oBAAA,EAAA,OAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAE,iBAAiB,EAAA,QAAA,EAAA,qBAAA,EAAA,MAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAO9B,eAAe,EAAA,UAAA,EAAA,CAAA;kBAT3B,SAAS;+BACI,mBAAmB,EAAA,OAAA,EACpB,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAGvB,uBAAuB,CAAC,MAAM,aACpC,CAAC,cAAc,iBAAiB,CAAC,EAAA,IAAA,EACtC,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,EAAA,QAAA,EAAA,s0BAAA,EAAA,MAAA,EAAA,CAAA,07HAAA,CAAA,EAAA;;;AEa5C,MAAO,WAAY,SAAQ,mBAAmB,CAAA;AAlBpD,IAAA,WAAA,GAAA;;AAmBuB,QAAA,IAAA,CAAA,OAAO,GAAG,MAAM,CAAC,0BAA0B,CAAC;AAE/C,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,aAAa,CAAC;AACtD,QAAA,IAAA,CAAA,cAAc,GAAG,KAAK,CAAkB,YAAY,CAAC;AACrD,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC;AAC1B,QAAA,IAAA,CAAA,aAAa,GAAG,KAAK,CAA0B,IAAI,CAAC;AACpD,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAmB,OAAO,CAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,KAAK,CAAgB,IAAI,CAAC;QACxC,IAAA,CAAA,QAAQ,GAAG,MAAM,EAAU;AAExB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,aAAa;AAExD,YAAA,OAAO,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG;AAC5D,QAAA,CAAC,CAAC;AAEiB,QAAA,IAAA,CAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACtD,YAAA,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI,YAAY;AAEvD,YAAA,OAAO,SAAS,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,GAAG;AAC7D,QAAA,CAAC,CAAC;QAEiB,IAAA,CAAA,IAAI,GAAG,YAAY,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;AAE7C,QAAA,IAAA,CAAA,kBAAkB,GAAG,MAAM,CAAC,MAAK;AAChD,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAE1B,IACI,IAAI,CAAC,YAAY,EAAE;AACnB,gBAAA,KAAK,YAAY,MAAM;AACvB,gBAAA,KAAK,CAAC,eAAe,CAAC,sBAAsB,CAAC,EAC/C;AACE,gBAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YACzB;AACJ,QAAA,CAAC,CAAC;AAeiB,QAAA,IAAA,CAAA,yBAAyB,GAGxC,CAAC,mBAAmB,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC,IAAI,KACxC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,mBAAmB,CAAC,IAAI,CAAC;AAsB7E,IAAA;AAvCU,IAAA,uBAAuB,CAAC,KAAe,EAAA;AAC1C,QAAA,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACjC;AAEO,IAAA,UAAU,CAAC,GAAW,EAAA;AACzB,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC;AACnB,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3B;AAEO,IAAA,mBAAmB,CAAC,GAAkB,EAAA;AACzC,QAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC;IAC9B;AAQU,IAAA,iBAAiB,CAAC,IAAY,EAAA;AACpC,QAAA,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;AACtB,QAAA,IAAI,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IAClE;AAEQ,IAAA,iBAAiB,CAAC,KAAe,EAAA;QACrC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC/B;QACJ;AAEA,QAAA,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;IACzB;AAEQ,IAAA,gBAAgB,CAAC,GAAkB,EAAA;QACvC,IAAI,eAAe,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE;QACJ;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC;IAC7B;+GA7ES,WAAW,EAAA,IAAA,EAAA,IAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAX,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,SAAA,EAAA,IAAA,EAAA,WAAW,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,uCAAA,EAAA,MAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,aAAA,EAAA,EAAA,iBAAA,EAAA,eAAA,EAAA,UAAA,EAAA,eAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,WAAA,EAAA,mBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,4BAAA,EAAA,GAAA,EAAA,EAAA,EAAA,SAAA,EANT;YACP,cAAc,CAAC,WAAW,CAAC;AAC3B,YAAA,UAAU,CAAC,mBAAmB,EAAE,WAAW,CAAC;SAC/C,EAAA,eAAA,EAAA,IAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9CL,mzCAqCA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDHQ,gBAAgB,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,qBAAA,EAAA,eAAA,EAAA,OAAA,EAAA,cAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAChB,eAAe,sIACf,eAAe,EAAA,QAAA,EAAA,mBAAA,EAAA,MAAA,EAAA,CAAA,WAAA,EAAA,qBAAA,EAAA,OAAA,EAAA,KAAA,EAAA,KAAA,EAAA,aAAA,CAAA,EAAA,OAAA,EAAA,CAAA,WAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,MAAA,EAAA,IAAA,EACf,aAAa,EAAA,IAAA,EAAA,WAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EACb,YAAY,EAAA,QAAA,EAAA,eAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA,CAAA;;4FAWP,WAAW,EAAA,UAAA,EAAA,CAAA;kBAlBvB,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,uCAAuC,EAAA,OAAA,EACxC;wBACL,gBAAgB;wBAChB,eAAe;wBACf,eAAe;wBACf,aAAa;wBACb,YAAY;qBACf,EAAA,eAAA,EAGgB,uBAAuB,CAAC,MAAM,EAAA,SAAA,EACpC;AACP,wBAAA,cAAc,CAAA,WAAA,CAAa;wBAC3B,UAAU,CAAC,mBAAmB,EAAA,WAAA,CAAc;AAC/C,qBAAA,EAAA,IAAA,EACK,EAAC,8BAA8B,EAAE,GAAG,EAAC,EAAA,QAAA,EAAA,mzCAAA,EAAA,MAAA,EAAA,CAAA,4SAAA,CAAA,EAAA;;;AE/C/C;;AAEG;;;;"}
|
|
@@ -72,11 +72,11 @@ class TuiCarouselComponent {
|
|
|
72
72
|
this.el.scrollWidth - this.el.clientWidth - Math.abs(this.el.scrollLeft) < 1);
|
|
73
73
|
}
|
|
74
74
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCarouselComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
75
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { index: { classPropertyName: "index", publicName: "index", 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 } }, outputs: { index: "indexChange" }, host: { attributes: { "waIntersectionThreshold": "0.5" }, properties: { "style.max-block-size.px": "height()" } }, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], queries: [{ propertyName: "template", first: true, predicate: TuiItem, descendants: true, read: TemplateRef, isSignal: true }], hostDirectives: [{ directive: i1.WaIntersectionObserverDirective }], ngImport: i0, template: "<span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n ></span>\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n </span>\n}\n@if (min() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n ></span>\n </span>\n}\n<!--https://github.com/angular/angular/issues/50543-->\n<!--TODO(v6): delete-->\n<ng-content />\n", styles: [":host{scrollbar-width:none
|
|
75
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.25", type: TuiCarouselComponent, isStandalone: true, selector: "tui-carousel", inputs: { index: { classPropertyName: "index", publicName: "index", 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 } }, outputs: { index: "indexChange" }, host: { attributes: { "waIntersectionThreshold": "0.5" }, properties: { "style.max-block-size.px": "height()" } }, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], queries: [{ propertyName: "template", first: true, predicate: TuiItem, descendants: true, read: TemplateRef, isSignal: true }], hostDirectives: [{ directive: i1.WaIntersectionObserverDirective }], ngImport: i0, template: "<span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n ></span>\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n </span>\n}\n@if (min() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n ></span>\n </span>\n}\n<!--https://github.com/angular/angular/issues/50543-->\n<!--TODO(v6): delete-->\n<ng-content />\n", styles: [":host{scrollbar-width:none;transition-property:max-block-size;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:flex;max-inline-size:100%;overscroll-behavior-x:none;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:active .t-item{padding-block-start:1px;margin-block-start:-1px}.t-item{position:relative;display:flex;min-inline-size:100%;block-size:100%;box-sizing:content-box;align-items:center;justify-content:center;scroll-snap-align:start;scroll-snap-stop:always}.t-item:first-child .t-bumper{inset-inline-start:0}.t-item:last-child .t-bumper{inset-inline-end:0}.t-bumper,.t-observer{position:absolute;inset-block-start:.125rem;block-size:.125rem;inline-size:25%;pointer-events:none}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i1.WaIntersectionObserverDirective, selector: "[waIntersectionObserver]", inputs: ["waIntersectionRootMargin", "waIntersectionThreshold"], exportAs: ["IntersectionObserver"] }, { kind: "directive", type: i1.WaIntersectionObservee, selector: "[waIntersectionObservee]", outputs: ["waIntersectionObservee"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
76
76
|
}
|
|
77
77
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImport: i0, type: TuiCarouselComponent, decorators: [{
|
|
78
78
|
type: Component,
|
|
79
|
-
args: [{ selector: 'tui-carousel', imports: [NgTemplateOutlet, WaIntersectionObserver, WaIntersectionObserverDirective], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], hostDirectives: [WaIntersectionObserverDirective], host: { waIntersectionThreshold: '0.5', '[style.max-block-size.px]': 'height()' }, template: "<span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n ></span>\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n </span>\n}\n@if (min() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n ></span>\n </span>\n}\n<!--https://github.com/angular/angular/issues/50543-->\n<!--TODO(v6): delete-->\n<ng-content />\n", styles: [":host{scrollbar-width:none
|
|
79
|
+
args: [{ selector: 'tui-carousel', imports: [NgTemplateOutlet, WaIntersectionObserver, WaIntersectionObserverDirective], changeDetection: ChangeDetectionStrategy.OnPush, providers: [tuiProvide(WA_INTERSECTION_ROOT, ElementRef)], hostDirectives: [WaIntersectionObserverDirective], host: { waIntersectionThreshold: '0.5', '[style.max-block-size.px]': 'height()' }, template: "<span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.max(index() - 1, min())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, -1)\"\n ></span>\n</span>\n@if (index() !== min() && index() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: index()}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n </span>\n}\n@if (min() !== max()) {\n <span class=\"t-item\">\n <ng-container *ngTemplateOutlet=\"template(); context: {$implicit: math.min(index() + 1, max())}\" />\n <span\n class=\"t-observer\"\n (waIntersectionObservee)=\"onSlide($event[0])\"\n ></span>\n <span\n waIntersectionObserver\n waIntersectionThreshold=\"1\"\n class=\"t-bumper\"\n (waIntersectionObservee)=\"onIntersection(!!$event[0]?.isIntersecting, 1)\"\n ></span>\n </span>\n}\n<!--https://github.com/angular/angular/issues/50543-->\n<!--TODO(v6): delete-->\n<ng-content />\n", styles: [":host{scrollbar-width:none;transition-property:max-block-size;transition-duration:var(--tui-duration, .3s);transition-timing-function:var(--tui-curve-productive-standard);display:flex;max-inline-size:100%;overscroll-behavior-x:none;overflow-x:scroll;overflow-y:hidden;scroll-snap-type:x mandatory}:host::-webkit-scrollbar,:host::-webkit-scrollbar-thumb{display:none}:host:active .t-item{padding-block-start:1px;margin-block-start:-1px}.t-item{position:relative;display:flex;min-inline-size:100%;block-size:100%;box-sizing:content-box;align-items:center;justify-content:center;scroll-snap-align:start;scroll-snap-stop:always}.t-item:first-child .t-bumper{inset-inline-start:0}.t-item:last-child .t-bumper{inset-inline-end:0}.t-bumper,.t-observer{position:absolute;inset-block-start:.125rem;block-size:.125rem;inline-size:25%;pointer-events:none}\n"] }]
|
|
80
80
|
}], ctorParameters: () => [] });
|
|
81
81
|
|
|
82
82
|
class TuiCarouselDirective {
|