@taiga-ui/core 4.6.0 → 4.7.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.
Files changed (60) hide show
  1. package/components/calendar/calendar-sheet.component.d.ts +3 -3
  2. package/components/calendar/calendar-year.component.d.ts +3 -6
  3. package/components/data-list/data-list.component.d.ts +2 -0
  4. package/components/textfield/select.directive.d.ts +4 -4
  5. package/components/textfield/textfield.component.d.ts +3 -1
  6. package/components/textfield/textfield.directive.d.ts +11 -8
  7. package/directives/appearance/appearance.bindings.d.ts +3 -0
  8. package/directives/appearance/appearance.directive.d.ts +4 -1
  9. package/directives/appearance/with-appearance.d.ts +1 -1
  10. package/directives/dropdown/dropdown-options.directive.d.ts +1 -1
  11. package/directives/hint/hint-describe.directive.d.ts +1 -0
  12. package/directives/hint/hint-options.directive.d.ts +1 -1
  13. package/esm2022/components/calendar/calendar-sheet.component.mjs +27 -29
  14. package/esm2022/components/calendar/calendar-year.component.mjs +20 -50
  15. package/esm2022/components/data-list/data-list.component.mjs +10 -4
  16. package/esm2022/components/root/root.component.mjs +8 -2
  17. package/esm2022/components/textfield/select.directive.mjs +2 -3
  18. package/esm2022/components/textfield/textfield.component.mjs +9 -5
  19. package/esm2022/components/textfield/textfield.directive.mjs +11 -7
  20. package/esm2022/directives/appearance/appearance.bindings.mjs +4 -1
  21. package/esm2022/directives/appearance/appearance.directive.mjs +12 -4
  22. package/esm2022/directives/appearance/with-appearance.mjs +3 -2
  23. package/esm2022/directives/dropdown/dropdown-options.directive.mjs +3 -2
  24. package/esm2022/directives/group/group.directive.mjs +2 -2
  25. package/esm2022/directives/hint/hint-describe.directive.mjs +5 -4
  26. package/esm2022/directives/hint/hint-options.directive.mjs +3 -2
  27. package/fesm2022/taiga-ui-core-components-calendar.mjs +44 -76
  28. package/fesm2022/taiga-ui-core-components-calendar.mjs.map +1 -1
  29. package/fesm2022/taiga-ui-core-components-data-list.mjs +9 -3
  30. package/fesm2022/taiga-ui-core-components-data-list.mjs.map +1 -1
  31. package/fesm2022/taiga-ui-core-components-root.mjs +7 -1
  32. package/fesm2022/taiga-ui-core-components-root.mjs.map +1 -1
  33. package/fesm2022/taiga-ui-core-components-textfield.mjs +19 -12
  34. package/fesm2022/taiga-ui-core-components-textfield.mjs.map +1 -1
  35. package/fesm2022/taiga-ui-core-directives-appearance.mjs +17 -5
  36. package/fesm2022/taiga-ui-core-directives-appearance.mjs.map +1 -1
  37. package/fesm2022/taiga-ui-core-directives-dropdown.mjs +2 -2
  38. package/fesm2022/taiga-ui-core-directives-dropdown.mjs.map +1 -1
  39. package/fesm2022/taiga-ui-core-directives-group.mjs +2 -2
  40. package/fesm2022/taiga-ui-core-directives-group.mjs.map +1 -1
  41. package/fesm2022/taiga-ui-core-directives-hint.mjs +5 -4
  42. package/fesm2022/taiga-ui-core-directives-hint.mjs.map +1 -1
  43. package/package.json +13 -13
  44. package/styles/components/appearance.less +1 -1
  45. package/styles/components/group.less +6 -5
  46. package/styles/components/textfield.less +14 -5
  47. package/styles/mixins/date-picker.less +152 -0
  48. package/styles/mixins/picker.less +1 -0
  49. package/styles/mixins/picker.scss +1 -0
  50. package/styles/taiga-ui-local.less +1 -0
  51. package/styles/theme/appearance/floating.less +2 -2
  52. package/styles/theme/appearance/glass.less +3 -3
  53. package/styles/theme/appearance/opposite.less +2 -2
  54. package/styles/theme/appearance/outline.less +6 -5
  55. package/styles/theme/appearance/primary.less +2 -1
  56. package/styles/theme/appearance/secondary.less +11 -6
  57. package/styles/theme/appearance/status.less +12 -6
  58. package/styles/theme/appearance/textfield.less +3 -3
  59. package/styles/theme/palette.less +58 -58
  60. package/styles/theme/wrapper.less +11 -9
@@ -1,7 +1,6 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { TuiDay, TuiDayRange, TuiMonth } from '@taiga-ui/cdk/date-time';
3
3
  import type { TuiBooleanHandler, TuiHandler } from '@taiga-ui/cdk/types';
4
- import type { TuiRangeState } from '@taiga-ui/core/types';
5
4
  import * as i0 from "@angular/core";
6
5
  export type TuiMarkerHandler = TuiHandler<TuiDay, [] | [string, string] | [string]>;
7
6
  export declare class TuiCalendarSheet {
@@ -18,9 +17,9 @@ export declare class TuiCalendarSheet {
18
17
  readonly dayClick: EventEmitter<TuiDay>;
19
18
  itemIsInterval(day: TuiDay): boolean;
20
19
  onItemHovered(item: TuiDay | false): void;
21
- getItemRange(item: TuiDay): TuiRangeState | null;
20
+ getItemRange(item: TuiDay): 'active' | 'end' | 'middle' | 'start' | null;
22
21
  protected get isSingleDayRange(): boolean;
23
- protected readonly toMarkers: (day: TuiDay, today: boolean, inRange: boolean, markerHandler: TuiMarkerHandler | null) => [
22
+ protected readonly toMarkers: (day: TuiDay, today: boolean, range: string | null, markerHandler: TuiMarkerHandler | null) => [
24
23
  string,
25
24
  string
26
25
  ] | [
@@ -29,6 +28,7 @@ export declare class TuiCalendarSheet {
29
28
  protected itemIsToday(item: TuiDay): boolean;
30
29
  protected itemIsUnavailable(item: TuiDay): boolean;
31
30
  protected onItemClick(item: TuiDay): void;
31
+ private getRange;
32
32
  private updateHoveredItem;
33
33
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiCalendarSheet, never>;
34
34
  static ɵcmp: i0.ɵɵComponentDeclaration<TuiCalendarSheet, "tui-calendar-sheet", never, { "month": { "alias": "month"; "required": false; }; "disabledItemHandler": { "alias": "disabledItemHandler"; "required": false; }; "markerHandler": { "alias": "markerHandler"; "required": false; }; "value": { "alias": "value"; "required": false; }; "hoveredItem": { "alias": "hoveredItem"; "required": false; }; "showAdjacent": { "alias": "showAdjacent"; "required": false; }; }, { "hoveredItemChange": "hoveredItemChange"; "dayClick": "dayClick"; }, never, never, true, never>;
@@ -1,8 +1,7 @@
1
1
  import { EventEmitter } from '@angular/core';
2
- import type { TuiDay, TuiDayRange } from '@taiga-ui/cdk/date-time';
3
- import { TuiMonthRange, TuiYear } from '@taiga-ui/cdk/date-time';
2
+ import type { TuiDay } from '@taiga-ui/cdk/date-time';
3
+ import { TuiDayRange, TuiMonthRange, TuiYear } from '@taiga-ui/cdk/date-time';
4
4
  import type { TuiBooleanHandler } from '@taiga-ui/cdk/types';
5
- import type { TuiRangeState } from '@taiga-ui/core/types';
6
5
  import * as i0 from "@angular/core";
7
6
  export declare class TuiCalendarYear {
8
7
  private hoveredItem;
@@ -14,12 +13,10 @@ export declare class TuiCalendarYear {
14
13
  disabledItemHandler: TuiBooleanHandler<number>;
15
14
  readonly yearClick: EventEmitter<number>;
16
15
  isDisabled(item: number): boolean;
17
- getItemRange(item: number): TuiRangeState | null;
18
- itemIsInterval(item: number): boolean;
16
+ getItemRange(item: number): 'active' | 'end' | 'middle' | 'start' | null;
19
17
  onItemHovered(hovered: boolean, item: number): void;
20
18
  protected get isSingle(): boolean;
21
19
  protected get rows(): number;
22
- protected isRange(item: TuiMonthRange | TuiYear | number | readonly TuiDay[] | null): item is TuiMonthRange;
23
20
  protected scrollItemIntoView(item: number): boolean;
24
21
  protected getItem(rowIndex: number, colIndex: number): number;
25
22
  protected itemIsToday(item: number): boolean;
@@ -7,6 +7,8 @@ export declare function tuiInjectDataListSize(): TuiSizeL | TuiSizeS;
7
7
  export declare class TuiDataListComponent<T> implements TuiDataListAccessor<T>, AfterContentChecked {
8
8
  private readonly options;
9
9
  private origin?;
10
+ private readonly ngZone;
11
+ private readonly destroyRef;
10
12
  private readonly el;
11
13
  protected readonly fallback: import("@angular/core").Signal<string | undefined>;
12
14
  protected readonly empty: import("@angular/core").WritableSignal<boolean>;
@@ -2,14 +2,14 @@ import { TuiTextfieldBase } from './textfield.directive';
2
2
  import * as i0 from "@angular/core";
3
3
  import * as i1 from "@taiga-ui/cdk/directives/native-validator";
4
4
  import * as i2 from "@taiga-ui/core/directives/appearance";
5
- export declare class TuiSelect extends TuiTextfieldBase {
5
+ export declare class TuiSelect<T> extends TuiTextfieldBase<T> {
6
6
  private readonly nav;
7
7
  private readonly control;
8
8
  placeholder: string;
9
- setValue(value: string): void;
9
+ setValue(value: T): void;
10
10
  focus(): void;
11
11
  protected get value(): string;
12
12
  protected onCopy(): Promise<void>;
13
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiSelect, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<TuiSelect, "select[tuiTextfield]", never, { "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiNativeValidator; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAppearance; inputs: {}; outputs: {}; }]>;
13
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiSelect<any>, never>;
14
+ static ɵcmp: i0.ɵɵComponentDeclaration<TuiSelect<any>, "select[tuiTextfield]", never, { "placeholder": { "alias": "placeholder"; "required": false; }; }, {}, never, never, true, [{ directive: typeof i1.TuiNativeValidator; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAppearance; inputs: {}; outputs: {}; }]>;
15
15
  }
@@ -2,6 +2,7 @@ import { ChangeDetectorRef, ElementRef, ViewContainerRef } from '@angular/core';
2
2
  import { NgControl } from '@angular/forms';
3
3
  import type { TuiContext, TuiStringHandler } from '@taiga-ui/cdk/types';
4
4
  import type { TuiDataListHost } from '@taiga-ui/core/components/data-list';
5
+ import type { TuiSizeL, TuiSizeS } from '@taiga-ui/core/types';
5
6
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
6
7
  import { TuiTextfieldDirective } from './textfield.directive';
7
8
  import * as i0 from "@angular/core";
@@ -11,7 +12,7 @@ import * as i3 from "@taiga-ui/core/directives/icons";
11
12
  export declare class TuiTextfieldComponent<T> implements TuiDataListHost<T> {
12
13
  private readonly open;
13
14
  private readonly focusedIn;
14
- protected readonly directive?: TuiTextfieldDirective;
15
+ protected readonly directive?: TuiTextfieldDirective<T>;
15
16
  protected readonly label?: ElementRef<HTMLElement>;
16
17
  protected readonly control?: NgControl;
17
18
  protected side: number;
@@ -26,6 +27,7 @@ export declare class TuiTextfieldComponent<T> implements TuiDataListHost<T> {
26
27
  readonly focused: import("@angular/core").Signal<boolean>;
27
28
  readonly options: import("./textfield.options").TuiTextfieldOptions;
28
29
  get id(): string;
30
+ get size(): TuiSizeL | TuiSizeS;
29
31
  handleOption(option: T): void;
30
32
  protected get computedFiller(): string;
31
33
  protected get showFiller(): boolean;
@@ -1,25 +1,28 @@
1
+ import { type OnChanges } from '@angular/core';
1
2
  import type { TuiInteractiveState } from '@taiga-ui/core/types';
2
3
  import { TuiTextfieldComponent } from './textfield.component';
3
4
  import * as i0 from "@angular/core";
4
5
  import * as i1 from "@taiga-ui/cdk/directives/native-validator";
5
6
  import * as i2 from "@taiga-ui/core/directives/appearance";
6
- export declare class TuiTextfieldBase {
7
+ export declare class TuiTextfieldBase<T> implements OnChanges {
7
8
  private readonly focused;
8
9
  protected readonly a: import("@angular/core").WritableSignal<string>;
9
10
  protected readonly s: import("@angular/core").WritableSignal<TuiInteractiveState | null>;
11
+ protected readonly m: import("@angular/core").WritableSignal<string | readonly string[] | null>;
10
12
  protected readonly f: import("@angular/core").Signal<boolean | null>;
11
- protected readonly textfield: TuiTextfieldComponent<any>;
12
13
  protected readonly el: HTMLInputElement;
14
+ protected readonly textfield: TuiTextfieldComponent<T>;
13
15
  readOnly: boolean;
14
16
  invalid: boolean | null;
15
17
  set focusedSetter(focused: boolean | null);
16
18
  set stateSetter(state: TuiInteractiveState | null);
17
19
  get mode(): string | null;
18
- setValue(value: string): void;
19
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldBase, never>;
20
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTextfieldBase, never, never, { "readOnly": { "alias": "readOnly"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "focusedSetter": { "alias": "focused"; "required": false; }; "stateSetter": { "alias": "state"; "required": false; }; }, {}, never, never, false, never>;
20
+ ngOnChanges(): void;
21
+ setValue(value: T | null): void;
22
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldBase<any>, never>;
23
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTextfieldBase<any>, never, never, { "readOnly": { "alias": "readOnly"; "required": false; }; "invalid": { "alias": "invalid"; "required": false; }; "focusedSetter": { "alias": "focused"; "required": false; }; "stateSetter": { "alias": "state"; "required": false; }; }, {}, never, never, false, never>;
21
24
  }
22
- export declare class TuiTextfieldDirective extends TuiTextfieldBase {
23
- static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldDirective, never>;
24
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTextfieldDirective, "input[tuiTextfield]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiNativeValidator; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAppearance; inputs: {}; outputs: {}; }]>;
25
+ export declare class TuiTextfieldDirective<T> extends TuiTextfieldBase<T> {
26
+ static ɵfac: i0.ɵɵFactoryDeclaration<TuiTextfieldDirective<any>, never>;
27
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiTextfieldDirective<any>, "input[tuiTextfield]", never, {}, {}, never, never, true, [{ directive: typeof i1.TuiNativeValidator; inputs: {}; outputs: {}; }, { directive: typeof i2.TuiAppearance; inputs: {}; outputs: {}; }]>;
25
28
  }
@@ -3,10 +3,13 @@ import type { TuiInteractiveState } from '@taiga-ui/core/types';
3
3
  type A = string;
4
4
  type S = TuiInteractiveState | null;
5
5
  type F = boolean | null;
6
+ type M = string | readonly string[] | null;
6
7
  export declare function tuiAppearance(value: A | WritableSignal<A>): WritableSignal<A>;
7
8
  export declare function tuiAppearance(value: Signal<A>): Signal<A>;
8
9
  export declare function tuiAppearanceState(value: S | WritableSignal<S>): WritableSignal<S>;
9
10
  export declare function tuiAppearanceState(value: Signal<S>): Signal<S>;
10
11
  export declare function tuiAppearanceFocus(value: F | WritableSignal<F>): WritableSignal<F>;
11
12
  export declare function tuiAppearanceFocus(value: Signal<F>): Signal<F>;
13
+ export declare function tuiAppearanceMode(value: M | WritableSignal<M>): WritableSignal<M>;
14
+ export declare function tuiAppearanceMode(value: Signal<M>): Signal<M>;
12
15
  export {};
@@ -3,12 +3,15 @@ import { type TuiAppearanceOptions } from './appearance.options';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class TuiAppearance {
5
5
  protected readonly nothing: undefined;
6
+ protected readonly modes: import("@angular/core").Signal<string | null>;
6
7
  readonly appearance: import("@angular/core").WritableSignal<(Record<never, never> & string) | "accent" | "destructive" | "error" | "flat" | "floating" | "glass" | "info" | "link" | "neutral" | "opposite" | "outline" | "primary" | "secondary" | "success" | "textfield" | "warning" | "whiteblock">;
7
8
  readonly state: import("@angular/core").WritableSignal<TuiInteractiveState | null>;
8
9
  readonly focus: import("@angular/core").WritableSignal<boolean | null>;
10
+ readonly mode: import("@angular/core").WritableSignal<string | readonly string[] | null>;
9
11
  set tuiAppearance(appearance: TuiAppearanceOptions['appearance']);
10
12
  set tuiAppearanceState(state: TuiInteractiveState | null);
11
13
  set tuiAppearanceFocus(focus: boolean | null);
14
+ set tuiAppearanceMode(mode: string | readonly string[] | null);
12
15
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiAppearance, never>;
13
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiAppearance, "[tuiAppearance]", never, { "tuiAppearance": { "alias": "tuiAppearance"; "required": false; }; "tuiAppearanceState": { "alias": "tuiAppearanceState"; "required": false; }; "tuiAppearanceFocus": { "alias": "tuiAppearanceFocus"; "required": false; }; }, {}, never, never, true, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiAppearance, "[tuiAppearance]", never, { "tuiAppearance": { "alias": "tuiAppearance"; "required": false; }; "tuiAppearanceState": { "alias": "tuiAppearanceState"; "required": false; }; "tuiAppearanceFocus": { "alias": "tuiAppearanceFocus"; "required": false; }; "tuiAppearanceMode": { "alias": "tuiAppearanceMode"; "required": false; }; }, {}, never, never, true, never>;
14
17
  }
@@ -2,5 +2,5 @@ import * as i0 from "@angular/core";
2
2
  import * as i1 from "./appearance.directive";
3
3
  export declare class TuiWithAppearance {
4
4
  static ɵfac: i0.ɵɵFactoryDeclaration<TuiWithAppearance, never>;
5
- static ɵdir: i0.ɵɵDirectiveDeclaration<TuiWithAppearance, never, never, {}, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearance": "appearance"; "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; }; outputs: {}; }]>;
5
+ static ɵdir: i0.ɵɵDirectiveDeclaration<TuiWithAppearance, never, never, {}, {}, never, never, true, [{ directive: typeof i1.TuiAppearance; inputs: { "tuiAppearance": "appearance"; "tuiAppearanceState": "tuiAppearanceState"; "tuiAppearanceFocus": "tuiAppearanceFocus"; "tuiAppearanceMode": "tuiAppearanceMode"; }; outputs: {}; }]>;
6
6
  }
@@ -1,4 +1,4 @@
1
- import type { FactoryProvider } from '@angular/core';
1
+ import { type FactoryProvider } from '@angular/core';
2
2
  import type { TuiVerticalDirection } from '@taiga-ui/core/types';
3
3
  import * as i0 from "@angular/core";
4
4
  export type TuiDropdownAlign = 'center' | 'left' | 'right';
@@ -3,6 +3,7 @@ import * as i0 from "@angular/core";
3
3
  export declare class TuiHintDescribe extends TuiDriver {
4
4
  private readonly doc;
5
5
  private readonly el;
6
+ private readonly zone;
6
7
  private readonly id$;
7
8
  private readonly stream$;
8
9
  readonly type = "hint";
@@ -1,4 +1,4 @@
1
- import type { FactoryProvider, OnChanges } from '@angular/core';
1
+ import { type FactoryProvider, type OnChanges } from '@angular/core';
2
2
  import type { PolymorpheusContent } from '@taiga-ui/polymorpheus';
3
3
  import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
@@ -1,3 +1,4 @@
1
+ import { __decorate } from "tslib";
1
2
  import { CommonModule } from '@angular/common';
2
3
  import { ChangeDetectionStrategy, Component, EventEmitter, inject, Input, Output, } from '@angular/core';
3
4
  import { TUI_FALSE_HANDLER } from '@taiga-ui/cdk/constants';
@@ -6,7 +7,7 @@ import { TuiHovered } from '@taiga-ui/cdk/directives/hovered';
6
7
  import { TuiLet } from '@taiga-ui/cdk/directives/let';
7
8
  import { TuiRepeatTimes } from '@taiga-ui/cdk/directives/repeat-times';
8
9
  import { TuiMapperPipe } from '@taiga-ui/cdk/pipes/mapper';
9
- import { tuiNullableSame } from '@taiga-ui/cdk/utils/miscellaneous';
10
+ import { tuiNullableSame, tuiPure } from '@taiga-ui/cdk/utils/miscellaneous';
10
11
  import { TuiCalendarSheetPipe, TuiOrderWeekDaysPipe } from '@taiga-ui/core/pipes';
11
12
  import { TUI_DAY_TYPE_HANDLER, TUI_SHORT_WEEK_DAYS } from '@taiga-ui/core/tokens';
12
13
  import * as i0 from "@angular/core";
@@ -24,8 +25,8 @@ class TuiCalendarSheet {
24
25
  this.showAdjacent = true;
25
26
  this.hoveredItemChange = new EventEmitter();
26
27
  this.dayClick = new EventEmitter();
27
- this.toMarkers = (day, today, inRange, markerHandler) => {
28
- if (today || inRange) {
28
+ this.toMarkers = (day, today, range, markerHandler) => {
29
+ if (today || ['active', 'end', 'start'].includes(range || '')) {
29
30
  return null;
30
31
  }
31
32
  const markers = markerHandler?.(day);
@@ -51,34 +52,23 @@ class TuiCalendarSheet {
51
52
  }
52
53
  getItemRange(item) {
53
54
  const { value, hoveredItem } = this;
54
- if (!value) {
55
- return null;
56
- }
57
55
  if (value instanceof TuiDay) {
58
- return value.daySame(item) ? 'single' : null;
56
+ return value.daySame(item) ? 'active' : null;
59
57
  }
60
- if (!(value instanceof TuiDayRange)) {
61
- return value.find((day) => day.daySame(item)) ? 'single' : null;
58
+ if (!value || !(value instanceof TuiDayRange)) {
59
+ return value?.find((day) => day.daySame(item)) ? 'active' : null;
62
60
  }
63
- if ((value.from.daySame(item) && !value.isSingleDay) ||
64
- (hoveredItem?.dayAfter(value.from) &&
65
- value.from.daySame(item) &&
66
- value.isSingleDay) ||
67
- (hoveredItem?.daySame(item) &&
68
- hoveredItem.dayBefore(value.from) &&
69
- value.isSingleDay)) {
61
+ const range = this.getRange(value, hoveredItem);
62
+ if (value.isSingleDay && range.isSingleDay && value.from.daySame(item)) {
63
+ return 'active';
64
+ }
65
+ if (range.from.daySame(item)) {
70
66
  return 'start';
71
67
  }
72
- if ((value.to.daySame(item) && !value.isSingleDay) ||
73
- (hoveredItem?.dayBefore(value.from) &&
74
- value.from.daySame(item) &&
75
- value.isSingleDay) ||
76
- (hoveredItem?.daySame(item) &&
77
- hoveredItem.dayAfter(value.from) &&
78
- value.isSingleDay)) {
68
+ if (range.to.daySame(item)) {
79
69
  return 'end';
80
70
  }
81
- return value.isSingleDay && value.from.daySame(item) ? 'single' : null;
71
+ return range.from.dayBefore(item) && range.to.dayAfter(item) ? 'middle' : null;
82
72
  }
83
73
  get isSingleDayRange() {
84
74
  return this.value instanceof TuiDayRange && this.value.isSingleDay;
@@ -92,6 +82,11 @@ class TuiCalendarSheet {
92
82
  onItemClick(item) {
93
83
  this.dayClick.emit(item);
94
84
  }
85
+ getRange(value, hoveredItem) {
86
+ return value.isSingleDay
87
+ ? TuiDayRange.sort(value.from, hoveredItem ?? value.to)
88
+ : value;
89
+ }
95
90
  updateHoveredItem(day) {
96
91
  if (tuiNullableSame(this.hoveredItem, day, (a, b) => a.daySame(b))) {
97
92
  return;
@@ -100,8 +95,11 @@ class TuiCalendarSheet {
100
95
  this.hoveredItemChange.emit(day);
101
96
  }
102
97
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarSheet, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
103
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarSheet, isStandalone: true, selector: "tui-calendar-sheet", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", value: "value", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent" }, outputs: { hoveredItemChange: "hoveredItemChange", dayClick: "dayClick" }, host: { properties: { "class._single": "isSingleDayRange" } }, ngImport: i0, template: "<div class=\"t-row t-row_weekday\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n</div>\n<div *tuiLet=\"month | tuiCalendarSheet: true as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length || 0\">\n <ng-container *tuiLet=\"sheet[rowIndex]?.[colIndex] as item\">\n <div\n *ngIf=\"item && (!itemIsUnavailable(item) || showAdjacent)\"\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_interval]=\"itemIsInterval(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n <div\n automation-id=\"tui-calendar-sheet__item\"\n class=\"t-item\"\n [attr.data-type]=\"item | tuiMapper: dayTypeHandler\"\n [class.t-item_unavailable]=\"itemIsUnavailable(item)\"\n >\n {{ item.day }}\n <div\n *ngIf=\"\n item\n | tuiMapper\n : toMarkers\n : itemIsToday(item)\n : !!getItemRange(item)\n : markerHandler as markers\n \"\n class=\"t-dots\"\n >\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n <div\n *ngIf=\"markers.length > 1\"\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block;font:var(--tui-font-text-m)}.t-row{position:relative;display:flex;justify-content:space-between;block-size:2.25rem;isolation:isolate}.t-item{position:relative;flex:1;line-height:2rem;border-radius:var(--tui-radius-m)}.t-item:before,.t-item:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-item:after{border-radius:.5rem}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;inline-size:2.25rem;text-align:center;outline:none;cursor:pointer;background-clip:content-box;box-sizing:border-box;border:.125rem solid transparent}.t-cell:before{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;border-radius:var(--tui-radius-m)}.t-cell_today:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";bottom:.3125rem;block-size:.125rem;inline-size:.75rem;border-radius:.375rem;background:var(--tui-text-primary)}.t-cell_interval:before{background:var(--tui-background-base-alt)}:host._single .t-cell_interval:before{background:var(--tui-background-neutral-1-hover)}.t-cell_interval:not(:last-child):before{right:-.1875rem;border-start-end-radius:0;border-end-end-radius:0}.t-cell_interval:not([data-range=start]):not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell_interval:last-child:first-child:before{right:0}.t-cell_interval:first-child>.t-item{border-start-start-radius:var(--tui-radius-m);border-end-start-radius:var(--tui-radius-m)}.t-cell_interval:last-child>.t-item{border-start-end-radius:var(--tui-radius-m);border-end-end-radius:var(--tui-radius-m)}.t-cell_interval>.t-item{border-radius:0}.t-cell[data-range]:after{background:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item:before,.t-cell[data-range]>.t-item:after{background:var(--tui-background-accent-1)}.t-cell[data-range]:hover>.t-item:before,.t-cell[data-range]:hover>.t-item:after{background:var(--tui-background-accent-1-hover)}.t-cell[data-range]:active>.t-item:before,.t-cell[data-range]:active>.t-item:after{background:var(--tui-background-accent-1-pressed)}.t-cell[data-range=end]:before{background:var(--tui-background-base-alt)}:host._single .t-cell[data-range=end]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=end]>.t-item:before{left:.625rem;border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=end]>.t-item:after{left:-2rem;right:100%;transform:translate(1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=start]>.t-item:before{right:.625rem;border-start-end-radius:0;border-end-end-radius:0}.t-cell[data-range=start]>.t-item:after{left:100%;right:-2rem;transform:translate(-1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=single]>.t-item:after{display:none}.t-cell_disabled{pointer-events:none}.t-cell_disabled>.t-item{opacity:.36}.t-cell:hover:not([data-range])>.t-item{background:var(--tui-background-neutral-1-hover)}.t-cell:active:not([data-range])>.t-item{background:var(--tui-background-neutral-1-pressed)}:host{inline-size:15.75rem}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-text-s);color:var(--tui-text-secondary);pointer-events:none}.t-item{display:flex;flex-direction:column}.t-item_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{display:flex;justify-content:center;margin-top:-.5rem;padding-bottom:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TuiCalendarSheet, isStandalone: true, selector: "tui-calendar-sheet", inputs: { month: "month", disabledItemHandler: "disabledItemHandler", markerHandler: "markerHandler", value: "value", hoveredItem: "hoveredItem", showAdjacent: "showAdjacent" }, outputs: { hoveredItemChange: "hoveredItemChange", dayClick: "dayClick" }, host: { properties: { "class._picking": "isSingleDayRange" } }, ngImport: i0, template: "<div class=\"t-row t-row_weekday\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n</div>\n<div *tuiLet=\"month | tuiCalendarSheet: true as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length || 0\">\n <ng-container *tuiLet=\"sheet[rowIndex]?.[colIndex] as item\">\n <div\n *ngIf=\"item && (!itemIsUnavailable(item) || showAdjacent)\"\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayTypeHandler\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n <div\n *ngIf=\"\n item\n | tuiMapper\n : toMarkers\n : itemIsToday(item)\n : getItemRange(item)\n : markerHandler as markers\n \"\n class=\"t-dots\"\n >\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n <div\n *ngIf=\"markers.length > 1\"\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-base-alt)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-base-alt)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-start-end-radius:0;border-end-end-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-base-alt);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-base-alt);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}.t-cell{inline-size:2.25rem}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-text-s);color:var(--tui-text-secondary);pointer-events:none}.t-cell_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{position:absolute;bottom:0;display:flex;justify-content:center;margin-top:-.5rem;padding-bottom:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: TuiCalendarSheetPipe, name: "tuiCalendarSheet" }, { kind: "directive", type: TuiHovered, selector: "[tuiHoveredChange]", outputs: ["tuiHoveredChange"] }, { kind: "directive", type: TuiLet, selector: "[tuiLet]", inputs: ["tuiLet"] }, { kind: "pipe", type: TuiMapperPipe, name: "tuiMapper" }, { kind: "pipe", type: TuiOrderWeekDaysPipe, name: "tuiOrderWeekDays" }, { kind: "directive", type: TuiRepeatTimes, selector: "[tuiRepeatTimes][tuiRepeatTimesOf]", inputs: ["tuiRepeatTimesOf"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
99
  }
100
+ __decorate([
101
+ tuiPure
102
+ ], TuiCalendarSheet.prototype, "getRange", null);
105
103
  export { TuiCalendarSheet };
106
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TuiCalendarSheet, decorators: [{
107
105
  type: Component,
@@ -114,8 +112,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
114
112
  TuiOrderWeekDaysPipe,
115
113
  TuiRepeatTimes,
116
114
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
117
- '[class._single]': 'isSingleDayRange',
118
- }, template: "<div class=\"t-row t-row_weekday\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n</div>\n<div *tuiLet=\"month | tuiCalendarSheet: true as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length || 0\">\n <ng-container *tuiLet=\"sheet[rowIndex]?.[colIndex] as item\">\n <div\n *ngIf=\"item && (!itemIsUnavailable(item) || showAdjacent)\"\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_interval]=\"itemIsInterval(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n <div\n automation-id=\"tui-calendar-sheet__item\"\n class=\"t-item\"\n [attr.data-type]=\"item | tuiMapper: dayTypeHandler\"\n [class.t-item_unavailable]=\"itemIsUnavailable(item)\"\n >\n {{ item.day }}\n <div\n *ngIf=\"\n item\n | tuiMapper\n : toMarkers\n : itemIsToday(item)\n : !!getItemRange(item)\n : markerHandler as markers\n \"\n class=\"t-dots\"\n >\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n <div\n *ngIf=\"markers.length > 1\"\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n </div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [":host{display:block;font:var(--tui-font-text-m)}.t-row{position:relative;display:flex;justify-content:space-between;block-size:2.25rem;isolation:isolate}.t-item{position:relative;flex:1;line-height:2rem;border-radius:var(--tui-radius-m)}.t-item:before,.t-item:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-item:after{border-radius:.5rem}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;inline-size:2.25rem;text-align:center;outline:none;cursor:pointer;background-clip:content-box;box-sizing:border-box;border:.125rem solid transparent}.t-cell:before{content:\"\";position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;border-radius:var(--tui-radius-m)}.t-cell_today:after{position:absolute;left:50%;transform:translate(-50%);content:\"\";bottom:.3125rem;block-size:.125rem;inline-size:.75rem;border-radius:.375rem;background:var(--tui-text-primary)}.t-cell_interval:before{background:var(--tui-background-base-alt)}:host._single .t-cell_interval:before{background:var(--tui-background-neutral-1-hover)}.t-cell_interval:not(:last-child):before{right:-.1875rem;border-start-end-radius:0;border-end-end-radius:0}.t-cell_interval:not([data-range=start]):not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell_interval:last-child:first-child:before{right:0}.t-cell_interval:first-child>.t-item{border-start-start-radius:var(--tui-radius-m);border-end-start-radius:var(--tui-radius-m)}.t-cell_interval:last-child>.t-item{border-start-end-radius:var(--tui-radius-m);border-end-end-radius:var(--tui-radius-m)}.t-cell_interval>.t-item{border-radius:0}.t-cell[data-range]:after{background:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range]>.t-item:before,.t-cell[data-range]>.t-item:after{background:var(--tui-background-accent-1)}.t-cell[data-range]:hover>.t-item:before,.t-cell[data-range]:hover>.t-item:after{background:var(--tui-background-accent-1-hover)}.t-cell[data-range]:active>.t-item:before,.t-cell[data-range]:active>.t-item:after{background:var(--tui-background-accent-1-pressed)}.t-cell[data-range=end]:before{background:var(--tui-background-base-alt)}:host._single .t-cell[data-range=end]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=end]>.t-item:before{left:.625rem;border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=end]>.t-item:after{left:-2rem;right:100%;transform:translate(1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=start]>.t-item:before{right:.625rem;border-start-end-radius:0;border-end-end-radius:0}.t-cell[data-range=start]>.t-item:after{left:100%;right:-2rem;transform:translate(-1.6rem) scaleY(.83) scaleX(.5) rotate(45deg)}.t-cell[data-range=single]>.t-item:after{display:none}.t-cell_disabled{pointer-events:none}.t-cell_disabled>.t-item{opacity:.36}.t-cell:hover:not([data-range])>.t-item{background:var(--tui-background-neutral-1-hover)}.t-cell:active:not([data-range])>.t-item{background:var(--tui-background-neutral-1-pressed)}:host{inline-size:15.75rem}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-text-s);color:var(--tui-text-secondary);pointer-events:none}.t-item{display:flex;flex-direction:column}.t-item_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{display:flex;justify-content:center;margin-top:-.5rem;padding-bottom:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"] }]
115
+ '[class._picking]': 'isSingleDayRange',
116
+ }, template: "<div class=\"t-row t-row_weekday\">\n <div\n *ngFor=\"let day of unorderedWeekDays$ | tuiOrderWeekDays | async\"\n class=\"t-cell\"\n [textContent]=\"day\"\n ></div>\n</div>\n<div *tuiLet=\"month | tuiCalendarSheet: true as sheet\">\n <div\n *tuiRepeatTimes=\"let rowIndex of sheet.length\"\n automation-id=\"tui-calendar-sheet__row\"\n class=\"t-row\"\n >\n <ng-container *tuiRepeatTimes=\"let colIndex of sheet[rowIndex]?.length || 0\">\n <ng-container *tuiLet=\"sheet[rowIndex]?.[colIndex] as item\">\n <div\n *ngIf=\"item && (!itemIsUnavailable(item) || showAdjacent)\"\n automation-id=\"tui-calendar-sheet__cell\"\n class=\"t-cell\"\n [attr.data-range]=\"getItemRange(item)\"\n [attr.data-type]=\"item | tuiMapper: dayTypeHandler\"\n [class.t-cell_disabled]=\"disabledItemHandler(item)\"\n [class.t-cell_today]=\"itemIsToday(item)\"\n [class.t-cell_unavailable]=\"itemIsUnavailable(item)\"\n (click)=\"onItemClick(item)\"\n (tuiHoveredChange)=\"onItemHovered($event && item)\"\n >\n {{ item.day }}\n <div\n *ngIf=\"\n item\n | tuiMapper\n : toMarkers\n : itemIsToday(item)\n : getItemRange(item)\n : markerHandler as markers\n \"\n class=\"t-dots\"\n >\n <div\n class=\"t-dot\"\n [style.background]=\"markers?.[0]\"\n ></div>\n <div\n *ngIf=\"markers.length > 1\"\n class=\"t-dot\"\n [style.background]=\"markers?.[1] || ''\"\n ></div>\n </div>\n </div>\n </ng-container>\n </ng-container>\n </div>\n</div>\n", styles: [".t-row{display:flex;justify-content:flex-start;font:var(--tui-font-text-m)}.t-row:last-child{justify-content:flex-start}.t-cell{position:relative;display:flex;align-items:center;justify-content:center;line-height:2rem;isolation:isolate;cursor:pointer;overflow:hidden;border:.125rem solid transparent;box-sizing:border-box;-webkit-mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem));mask:linear-gradient(transparent calc(50% - 1rem),#000 calc(50% - 1rem),#000 calc(50% + 1rem),transparent calc(50% + 1rem))}.t-cell:first-child{border-inline-start-color:transparent!important}.t-cell:last-child{border-inline-end-color:transparent!important}.t-cell:before,.t-cell:after{position:absolute;top:0;left:0;bottom:0;right:0;content:\"\";z-index:-1;border-radius:var(--tui-radius-m)}.t-cell:after{-webkit-mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat;mask:url('data:image/svg+xml,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 32\"><path d=\"M0.2856 0L0.6763 0C2.9265 0 4.9876 1.259 6.0147 3.2611L10.2442 11.5048C11.5301 14.0113 11.5683 16.9754 10.3472 19.5141L5.9766 28.6007C4.9772 30.6786 2.8754 32 0.5696 32H0.285645V0Z\"></path></svg>') right / .75rem 100% no-repeat,linear-gradient(#000,#000) left / calc(100% - .7rem) 100% no-repeat}.t-cell[data-range]:before{background:var(--tui-background-base-alt)}:host._picking .t-cell[data-range]:before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]{border-color:var(--tui-background-base-alt)}:host._picking .t-cell[data-range=middle]{border-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=middle]:not(:first-child):before{border-start-start-radius:0;border-end-start-radius:0}.t-cell[data-range=middle]:not(:last-child):before{border-start-end-radius:0;border-end-end-radius:0}.t-cell[data-range=start]{border-inline-end-color:var(--tui-background-base-alt);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=start]{border-inline-end-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:not(:last-child):before{right:-1rem}.t-cell[data-range=start]:after{background:var(--tui-background-accent-1)}.t-cell[data-range=end]{border-inline-start-color:var(--tui-background-base-alt);color:var(--tui-text-primary-on-accent-1)}:host._picking .t-cell[data-range=end]{border-inline-start-color:var(--tui-background-neutral-1-hover)}.t-cell[data-range=end]:not(:first-child):before{left:-1rem}.t-cell[data-range=end]:after{background:var(--tui-background-accent-1);transform:scaleX(-1)}.t-cell[data-range=active]{color:var(--tui-text-primary-on-accent-1)}.t-cell[data-range=active]:after{background:var(--tui-background-accent-1);-webkit-mask:none;mask:none}.t-cell_disabled{opacity:var(--tui-disabled-opacity);pointer-events:none}.t-cell_today{text-decoration:underline;text-underline-offset:.25rem}@media (hover: hover){.t-cell:hover:not([data-range=start]):not([data-range=end]):before{background:var(--tui-background-neutral-1-hover)}.t-cell[data-range=start]:hover:after,.t-cell[data-range=end]:hover:after,.t-cell[data-range=active]:hover:after{background:var(--tui-background-accent-1-hover)}}.t-cell{inline-size:2.25rem}[data-type=weekday]{color:var(--tui-text-primary)}[data-type=weekend]{color:var(--tui-text-negative)}.t-row{justify-content:flex-start}.t-row:first-child{justify-content:flex-end}.t-row_weekday{font:var(--tui-font-text-s);color:var(--tui-text-secondary);pointer-events:none}.t-cell_unavailable{opacity:var(--tui-disabled-opacity)}.t-dots{position:absolute;bottom:0;display:flex;justify-content:center;margin-top:-.5rem;padding-bottom:.25rem}.t-dot{display:inline-block;inline-size:.25rem;block-size:.25rem;border-radius:100%;margin:0 .0625rem}\n"] }]
119
117
  }], propDecorators: { month: [{
120
118
  type: Input
121
119
  }], disabledItemHandler: [{
@@ -132,5 +130,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
132
130
  type: Output
133
131
  }], dayClick: [{
134
132
  type: Output
135
- }] } });
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXNoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci1zaGVldC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxpQkFBaUIsQ0FBQztBQUM3QyxPQUFPLEVBQ0gsdUJBQXVCLEVBQ3ZCLFNBQVMsRUFDVCxZQUFZLEVBQ1osTUFBTSxFQUNOLEtBQUssRUFDTCxNQUFNLEdBQ1QsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLGlCQUFpQixFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDMUQsT0FBTyxFQUFDLE1BQU0sRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFDLE1BQU0seUJBQXlCLENBQUM7QUFDdEUsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGtDQUFrQyxDQUFDO0FBQzVELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNwRCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sdUNBQXVDLENBQUM7QUFDckUsT0FBTyxFQUFDLGFBQWEsRUFBQyxNQUFNLDRCQUE0QixDQUFDO0FBRXpELE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUMsb0JBQW9CLEVBQUUsb0JBQW9CLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNoRixPQUFPLEVBQUMsb0JBQW9CLEVBQUUsbUJBQW1CLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBS2hGLE1BbUJhLGdCQUFnQjtJQW5CN0I7UUFvQnFCLFVBQUssR0FBRyxNQUFNLENBQUMsWUFBWSxFQUFFLENB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QkFJQyxZQUFZO3NCQURsQixLQUFLO2dCQUlVLGlCQUFpQjtzQkFEaEMsTUFBTTtnQkFJUyxRQUFRO3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21tb25Nb2R1bGV9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgaW5qZWN0LFxuICAgIElucHV0LFxuICAgIE91dHB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1RVSV9GQUxTRV9IQU5ETEVSfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2NvbnN0YW50cyc7XG5pbXBvcnQge1R1aURheSwgVHVpRGF5UmFuZ2UsIFR1aU1vbnRofSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RhdGUtdGltZSc7XG5pbXBvcnQge1R1aUhvdmVyZWR9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9ob3ZlcmVkJztcbmltcG9ydCB7VHVpTGV0fSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvbGV0JztcbmltcG9ydCB7VHVpUmVwZWF0VGltZXN9IGZyb20gJ0B0YWlnYS11aS9jZGsvZGlyZWN0aXZlcy9yZXBlYXQtdGltZXMnO1xuaW1wb3J0IHtUdWlNYXBwZXJQaXBlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3BpcGVzL21hcHBlcic7XG5pbXBvcnQgdHlwZSB7VHVpQm9vbGVhbkhhbmRsZXIsIFR1aUhhbmRsZXJ9IGZyb20gJ0B0YWlnYS11aS9jZGsvdHlwZXMnO1xuaW1wb3J0IHt0dWlOdWxsYWJsZVNhbWV9IGZyb20gJ0B0YWlnYS11aS9jZGsvdXRpbHMvbWlzY2VsbGFuZW91cyc7XG5pbXBvcnQge1R1aUNhbGVuZGFyU2hlZXRQaXBlLCBUdWlPcmRlcldlZWtEYXlzUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2NvcmUvcGlwZXMnO1xuaW1wb3J0IHtUVUlfREFZX1RZUEVfSEFORExFUiwgVFVJX1NIT1JUX1dFRUtfREFZU30gZnJvbSAnQHRhaWdhLXVpL2NvcmUvdG9rZW5zJztcbmltcG9ydCB0eXBlIHtUdWlSYW5nZVN0YXRlfSBmcm9tICdAdGFpZ2EtdWkvY29yZS90eXBlcyc7XG5cbmV4cG9ydCB0eXBlIFR1aU1hcmtlckhhbmRsZXIgPSBUdWlIYW5kbGVyPFR1aURheSwgW10gfCBbc3RyaW5nLCBzdHJpbmddIHwgW3N0cmluZ10+O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXNoZWV0JyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHVpQ2FsZW5kYXJTaGVldFBpcGUsXG4gICAgICAgIFR1aUhvdmVyZWQsXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICAgICAgVHVpT3JkZXJXZWVrRGF5c1BpcGUsXG4gICAgICAgIFR1aVJlcGVhdFRpbWVzLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXNoZWV0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLXNoZWV0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX3NpbmdsZV0nOiAnaXNTaW5nbGVEYXlSYW5nZScsXG4gICAgfSxcbn0pXG5leHBvcnQgY2xhc3MgVHVpQ2FsZW5kYXJTaGVldCB7XG4gICAgcHJpdmF0ZSByZWFkb25seSB0b2RheSA9IFR1aURheS5jdXJyZW50TG9jYWwoKTtcblxuICAgIHByb3RlY3RlZCByZWFkb25seSB1bm9yZGVyZWRXZWVrRGF5cyQgPSBpbmplY3QoVFVJX1NIT1JUX1dFRUtfREFZUyk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGRheVR5cGVIYW5kbGVyID0gaW5qZWN0KFRVSV9EQVlfVFlQRV9IQU5ETEVSKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1vbnRoOiBUdWlNb250aCA9IFR1aU1vbnRoLmN1cnJlbnRMb2NhbCgpO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzYWJsZWRJdGVtSGFuZGxlcjogVHVpQm9vbGVhbkhhbmRsZXI8VHVpRGF5PiA9IFRVSV9GQUxTRV9IQU5ETEVSO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbWFya2VySGFuZGxlcjogVHVpTWFya2VySGFuZGxlciB8IG51bGwgPSBudWxsO1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWU6IFR1aURheSB8IFR1aURheVJhbmdlIHwgcmVhZG9ubHkgVHVpRGF5W10gfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGhvdmVyZWRJdGVtOiBUdWlEYXkgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNob3dBZGphY2VudCA9IHRydWU7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgaG92ZXJlZEl0ZW1DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheSB8IG51bGw+KCk7XG5cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGF5Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFR1aURheT4oKTtcblxuICAgIHB1YmxpYyBpdGVtSXNJbnRlcnZhbChkYXk6IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKCEodmFsdWUgaW5zdGFuY2VvZiBUdWlEYXlSYW5nZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUuaXNTaW5nbGVEYXkpIHtcbiAgICAgICAgICAgIHJldHVybiB2YWx1ZS5mcm9tLmRheVNhbWVPckJlZm9yZShkYXkpICYmIHZhbHVlLnRvLmRheUFmdGVyKGRheSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaG92ZXJlZEl0ZW0gPT09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gVHVpRGF5UmFuZ2Uuc29ydCh2YWx1ZS5mcm9tLCBob3ZlcmVkSXRlbSk7XG5cbiAgICAgICAgcmV0dXJuIHJhbmdlLmZyb20uZGF5U2FtZU9yQmVmb3JlKGRheSkgJiYgcmFuZ2UudG8uZGF5QWZ0ZXIoZGF5KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25JdGVtSG92ZXJlZChpdGVtOiBUdWlEYXkgfCBmYWxzZSk6IHZvaWQge1xuICAgICAgICB0aGlzLnVwZGF0ZUhvdmVyZWRJdGVtKGl0ZW0gfHwgbnVsbCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEl0ZW1SYW5nZShpdGVtOiBUdWlEYXkpOiBUdWlSYW5nZVN0YXRlIHwgbnVsbCB7XG4gICAgICAgIGNvbnN0IHt2YWx1ZSwgaG92ZXJlZEl0ZW19ID0gdGhpcztcblxuICAgICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFR1aURheSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmRheVNhbWUoaXRlbSkgPyAnc2luZ2xlJyA6IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoISh2YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmZpbmQoKGRheSkgPT4gZGF5LmRheVNhbWUoaXRlbSkpID8gJ3NpbmdsZScgOiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgKHZhbHVlLmZyb20uZGF5U2FtZShpdGVtKSAmJiAhdmFsdWUuaXNTaW5nbGVEYXkpIHx8XG4gICAgICAgICAgICAoaG92ZXJlZEl0ZW0/LmRheUFmdGVyKHZhbHVlLmZyb20pICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuZnJvbS5kYXlTYW1lKGl0ZW0pICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVEYXkpIHx8XG4gICAgICAgICAgICAoaG92ZXJlZEl0ZW0/LmRheVNhbWUoaXRlbSkgJiZcbiAgICAgICAgICAgICAgICBob3ZlcmVkSXRlbS5kYXlCZWZvcmUodmFsdWUuZnJvbSkgJiZcbiAgICAgICAgICAgICAgICB2YWx1ZS5pc1NpbmdsZURheSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3N0YXJ0JztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICh2YWx1ZS50by5kYXlTYW1lKGl0ZW0pICYmICF2YWx1ZS5pc1NpbmdsZURheSkgfHxcbiAgICAgICAgICAgIChob3ZlcmVkSXRlbT8uZGF5QmVmb3JlKHZhbHVlLmZyb20pICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuZnJvbS5kYXlTYW1lKGl0ZW0pICYmXG4gICAgICAgICAgICAgICAgdmFsdWUuaXNTaW5nbGVEYXkpIHx8XG4gICAgICAgICAgICAoaG92ZXJlZEl0ZW0/LmRheVNhbWUoaXRlbSkgJiZcbiAgICAgICAgICAgICAgICBob3ZlcmVkSXRlbS5kYXlBZnRlcih2YWx1ZS5mcm9tKSAmJlxuICAgICAgICAgICAgICAgIHZhbHVlLmlzU2luZ2xlRGF5KVxuICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiAnZW5kJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB2YWx1ZS5pc1NpbmdsZURheSAmJiB2YWx1ZS5mcm9tLmRheVNhbWUoaXRlbSkgPyAnc2luZ2xlJyA6IG51bGw7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldCBpc1NpbmdsZURheVJhbmdlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy52YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlICYmIHRoaXMudmFsdWUuaXNTaW5nbGVEYXk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRvTWFya2VycyA9IChcbiAgICAgICAgZGF5OiBUdWlEYXksXG4gICAgICAgIHRvZGF5OiBib29sZWFuLFxuICAgICAgICBpblJhbmdlOiBib29sZWFuLFxuICAgICAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyIHwgbnVsbCxcbiAgICApOiBbc3RyaW5nLCBzdHJpbmddIHwgW3N0cmluZ10gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKHRvZGF5IHx8IGluUmFuZ2UpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgbWFya2VycyA9IG1hcmtlckhhbmRsZXI/LihkYXkpO1xuXG4gICAgICAgIHJldHVybiBtYXJrZXJzPy5sZW5ndGggPyBtYXJrZXJzIDogbnVsbDtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIGl0ZW1Jc1RvZGF5KGl0ZW06IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50b2RheS5kYXlTYW1lKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpdGVtSXNVbmF2YWlsYWJsZShpdGVtOiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLm1vbnRoLm1vbnRoU2FtZShpdGVtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25JdGVtQ2xpY2soaXRlbTogVHVpRGF5KTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGF5Q2xpY2suZW1pdChpdGVtKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUhvdmVyZWRJdGVtKGRheTogVHVpRGF5IHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBpZiAodHVpTnVsbGFibGVTYW1lKHRoaXMuaG92ZXJlZEl0ZW0sIGRheSwgKGEsIGIpID0+IGEuZGF5U2FtZShiKSkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuaG92ZXJlZEl0ZW0gPSBkYXk7XG4gICAgICAgIHRoaXMuaG92ZXJlZEl0ZW1DaGFuZ2UuZW1pdChkYXkpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0LXJvdyB0LXJvd193ZWVrZGF5XCI+XG4gICAgPGRpdlxuICAgICAgICAqbmdGb3I9XCJsZXQgZGF5IG9mIHVub3JkZXJlZFdlZWtEYXlzJCB8IHR1aU9yZGVyV2Vla0RheXMgfCBhc3luY1wiXG4gICAgICAgIGNsYXNzPVwidC1jZWxsXCJcbiAgICAgICAgW3RleHRDb250ZW50XT1cImRheVwiXG4gICAgPjwvZGl2PlxuPC9kaXY+XG48ZGl2ICp0dWlMZXQ9XCJtb250aCB8IHR1aUNhbGVuZGFyU2hlZXQ6IHRydWUgYXMgc2hlZXRcIj5cbiAgICA8ZGl2XG4gICAgICAgICp0dWlSZXBlYXRUaW1lcz1cImxldCByb3dJbmRleCBvZiBzaGVldC5sZW5ndGhcIlxuICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXNoZWV0X19yb3dcIlxuICAgICAgICBjbGFzcz1cInQtcm93XCJcbiAgICA+XG4gICAgICAgIDxuZy1jb250YWluZXIgKnR1aVJlcGVhdFRpbWVzPVwibGV0IGNvbEluZGV4IG9mIHNoZWV0W3Jvd0luZGV4XT8ubGVuZ3RoIHx8IDBcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKnR1aUxldD1cInNoZWV0W3Jvd0luZGV4XT8uW2NvbEluZGV4XSBhcyBpdGVtXCI+XG4gICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIml0ZW0gJiYgKCFpdGVtSXNVbmF2YWlsYWJsZShpdGVtKSB8fCBzaG93QWRqYWNlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhci1zaGVldF9fY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1jZWxsXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1yYW5nZV09XCJnZXRJdGVtUmFuZ2UoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1jZWxsX2Rpc2FibGVkXT1cImRpc2FibGVkSXRlbUhhbmRsZXIoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1jZWxsX2ludGVydmFsXT1cIml0ZW1Jc0ludGVydmFsKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtY2VsbF90b2RheV09XCJpdGVtSXNUb2RheShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfdW5hdmFpbGFibGVdPVwiaXRlbUlzVW5hdmFpbGFibGUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAodHVpSG92ZXJlZENoYW5nZSk9XCJvbkl0ZW1Ib3ZlcmVkKCRldmVudCAmJiBpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aW9uLWlkPVwidHVpLWNhbGVuZGFyLXNoZWV0X19pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidC1pdGVtXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtdHlwZV09XCJpdGVtIHwgdHVpTWFwcGVyOiBkYXlUeXBlSGFuZGxlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudC1pdGVtX3VuYXZhaWxhYmxlXT1cIml0ZW1Jc1VuYXZhaWxhYmxlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgaXRlbS5kYXkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHR1aU1hcHBlclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdG9NYXJrZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBpdGVtSXNUb2RheShpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogISFnZXRJdGVtUmFuZ2UoaXRlbSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1hcmtlckhhbmRsZXIgYXMgbWFya2Vyc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWRvdHNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ0LWRvdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kXT1cIm1hcmtlcnM/LlswXVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJtYXJrZXJzLmxlbmd0aCA+IDFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZG90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmRdPVwibWFya2Vycz8uWzFdIHx8ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
133
+ }], getRange: [] } });
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItc2hlZXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXNoZWV0LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvcmUvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci1zaGVldC50ZW1wbGF0ZS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFDN0MsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBQ0wsTUFBTSxHQUNULE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyxpQkFBaUIsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQzFELE9BQU8sRUFBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBQyxNQUFNLHlCQUF5QixDQUFDO0FBQ3RFLE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBQyxNQUFNLHVDQUF1QyxDQUFDO0FBQ3JFLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSw0QkFBNEIsQ0FBQztBQUV6RCxPQUFPLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBQyxNQUFNLG1DQUFtQyxDQUFDO0FBQzNFLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxvQkFBb0IsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQ2hGLE9BQU8sRUFBQyxvQkFBb0IsRUFBRSxtQkFBbUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7QUFJaEYsTUFtQmEsZ0JBQWdCO0lBbkI3QjtRQW9CcUIsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUU1Qix1QkFBa0IsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNqRCxtQkFBYyxHQUFHLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBRzFELFVBQUssR0FBYSxRQUFRLENBQUMsWUFBWSxFQUFFLENBQUM7UUFHMUMsd0JBQW1CLEdBQThCLGlCQUFpQixDQUFDO1FBR25FLGtCQUFhLEdBQTRCLElBQUksQ0FBQztRQUc5QyxVQUFLLEdBQW9ELElBQUksQ0FBQztRQUc5RCxnQkFBVyxHQUFrQixJQUFJLENBQUM7UUFHbEMsaUJBQVksR0FBRyxJQUFJLENBQUM7UUFHWCxzQkFBaUIsR0FBRyxJQUFJLFlBQVksRUFBaUIsQ0FBQztRQUd0RCxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQTBEbkMsY0FBUyxHQUFHLENBQzNCLEdBQVcsRUFDWCxLQUFjLEVBQ2QsS0FBb0IsRUFDcEIsYUFBc0MsRUFDSixFQUFFO1lBQ3BDLElBQUksS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxFQUFFO2dCQUMzRCxPQUFPLElBQUksQ0FBQzthQUNmO1lBRUQsTUFBTSxPQUFPLEdBQUcsYUFBYSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFckMsT0FBTyxPQUFPLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1QyxDQUFDLENBQUM7S0E2Qkw7SUFsR1UsY0FBYyxDQUFDLEdBQVc7UUFDN0IsTUFBTSxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFbEMsSUFBSSxDQUFDLENBQUMsS0FBSyxZQUFZLFdBQVcsQ0FBQyxFQUFFO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1NBQ2hCO1FBRUQsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUU7WUFDcEIsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUNwRTtRQUVELElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtZQUN0QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE1BQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RCxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7SUFFTSxhQUFhLENBQUMsSUFBb0I7UUFDckMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sWUFBWSxDQUFDLElBQVk7UUFDNUIsTUFBTSxFQUFDLEtBQUssRUFBRSxXQUFXLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFFbEMsSUFBSSxLQUFLLFlBQVksTUFBTSxFQUFFO1lBQ3pCLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7U0FDaEQ7UUFFRCxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLFlBQVksV0FBVyxDQUFDLEVBQUU7WUFDM0MsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1NBQ3BFO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFFaEQsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDcEUsT0FBTyxRQUFRLENBQUM7U0FDbkI7UUFFRCxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQzFCLE9BQU8sT0FBTyxDQUFDO1NBQ2xCO1FBRUQsSUFBSSxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN4QixPQUFPLEtBQUssQ0FBQztTQUNoQjtRQUVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ25GLENBQUM7SUFFRCxJQUFjLGdCQUFnQjtRQUMxQixPQUFPLElBQUksQ0FBQyxLQUFLLFlBQVksV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDO0lBQ3ZFLENBQUM7SUFpQlMsV0FBVyxDQUFDLElBQVk7UUFDOUIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVTLFdBQVcsQ0FBQyxJQUFZO1FBQzlCLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFHTyxRQUFRLENBQUMsS0FBa0IsRUFBRSxXQUEwQjtRQUMzRCxPQUFPLEtBQUssQ0FBQyxXQUFXO1lBQ3BCLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsV0FBVyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDdkQsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUNoQixDQUFDO0lBRU8saUJBQWlCLENBQUMsR0FBa0I7UUFDeEMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDaEUsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLENBQUM7UUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQyxDQUFDOytHQS9IUSxnQkFBZ0I7bUdBQWhCLGdCQUFnQiwyWUN6QzdCLHl3RUFzREEsd2xJRDVCUSxZQUFZLGdUQUNaLG9CQUFvQix5REFDcEIsVUFBVSw4RkFDVixNQUFNLG9FQUNOLGFBQWEsNkNBQ2Isb0JBQW9CLHlEQUNwQixjQUFjOztBQTJIVjtJQURQLE9BQU87Z0RBS1A7U0F0SFEsZ0JBQWdCOzRGQUFoQixnQkFBZ0I7a0JBbkI1QixTQUFTO2lDQUNNLElBQUksWUFDTixvQkFBb0IsV0FDckI7d0JBQ0wsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLFVBQVU7d0JBQ1YsTUFBTTt3QkFDTixhQUFhO3dCQUNiLG9CQUFvQjt3QkFDcEIsY0FBYztxQkFDakIsbUJBR2dCLHVCQUF1QixDQUFDLE1BQU0sUUFDekM7d0JBQ0Ysa0JBQWtCLEVBQUUsa0JBQWtCO3FCQUN6Qzs4QkFTTSxLQUFLO3NCQURYLEtBQUs7Z0JBSUMsbUJBQW1CO3NCQUR6QixLQUFLO2dCQUlDLGFBQWE7c0JBRG5CLEtBQUs7Z0JBSUMsS0FBSztzQkFEWCxLQUFLO2dCQUlDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBSUMsWUFBWTtzQkFEbEIsS0FBSztnQkFJVSxpQkFBaUI7c0JBRGhDLE1BQU07Z0JBSVMsUUFBUTtzQkFEdkIsTUFBTTtnQkF1RkMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tbW9uTW9kdWxlfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtUVUlfRkFMU0VfSEFORExFUn0gZnJvbSAnQHRhaWdhLXVpL2Nkay9jb25zdGFudHMnO1xuaW1wb3J0IHtUdWlEYXksIFR1aURheVJhbmdlLCBUdWlNb250aH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kYXRlLXRpbWUnO1xuaW1wb3J0IHtUdWlIb3ZlcmVkfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvaG92ZXJlZCc7XG5pbXBvcnQge1R1aUxldH0gZnJvbSAnQHRhaWdhLXVpL2Nkay9kaXJlY3RpdmVzL2xldCc7XG5pbXBvcnQge1R1aVJlcGVhdFRpbWVzfSBmcm9tICdAdGFpZ2EtdWkvY2RrL2RpcmVjdGl2ZXMvcmVwZWF0LXRpbWVzJztcbmltcG9ydCB7VHVpTWFwcGVyUGlwZX0gZnJvbSAnQHRhaWdhLXVpL2Nkay9waXBlcy9tYXBwZXInO1xuaW1wb3J0IHR5cGUge1R1aUJvb2xlYW5IYW5kbGVyLCBUdWlIYW5kbGVyfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3R5cGVzJztcbmltcG9ydCB7dHVpTnVsbGFibGVTYW1lLCB0dWlQdXJlfSBmcm9tICdAdGFpZ2EtdWkvY2RrL3V0aWxzL21pc2NlbGxhbmVvdXMnO1xuaW1wb3J0IHtUdWlDYWxlbmRhclNoZWV0UGlwZSwgVHVpT3JkZXJXZWVrRGF5c1BpcGV9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3BpcGVzJztcbmltcG9ydCB7VFVJX0RBWV9UWVBFX0hBTkRMRVIsIFRVSV9TSE9SVF9XRUVLX0RBWVN9IGZyb20gJ0B0YWlnYS11aS9jb3JlL3Rva2Vucyc7XG5cbmV4cG9ydCB0eXBlIFR1aU1hcmtlckhhbmRsZXIgPSBUdWlIYW5kbGVyPFR1aURheSwgW10gfCBbc3RyaW5nLCBzdHJpbmddIHwgW3N0cmluZ10+O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIHNlbGVjdG9yOiAndHVpLWNhbGVuZGFyLXNoZWV0JyxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIENvbW1vbk1vZHVsZSxcbiAgICAgICAgVHVpQ2FsZW5kYXJTaGVldFBpcGUsXG4gICAgICAgIFR1aUhvdmVyZWQsXG4gICAgICAgIFR1aUxldCxcbiAgICAgICAgVHVpTWFwcGVyUGlwZSxcbiAgICAgICAgVHVpT3JkZXJXZWVrRGF5c1BpcGUsXG4gICAgICAgIFR1aVJlcGVhdFRpbWVzLFxuICAgIF0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLXNoZWV0LnRlbXBsYXRlLmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NhbGVuZGFyLXNoZWV0LnN0eWxlLmxlc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBob3N0OiB7XG4gICAgICAgICdbY2xhc3MuX3BpY2tpbmddJzogJ2lzU2luZ2xlRGF5UmFuZ2UnLFxuICAgIH0sXG59KVxuZXhwb3J0IGNsYXNzIFR1aUNhbGVuZGFyU2hlZXQge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdG9kYXkgPSBUdWlEYXkuY3VycmVudExvY2FsKCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdW5vcmRlcmVkV2Vla0RheXMkID0gaW5qZWN0KFRVSV9TSE9SVF9XRUVLX0RBWVMpO1xuICAgIHByb3RlY3RlZCByZWFkb25seSBkYXlUeXBlSGFuZGxlciA9IGluamVjdChUVUlfREFZX1RZUEVfSEFORExFUik7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBtb250aDogVHVpTW9udGggPSBUdWlNb250aC5jdXJyZW50TG9jYWwoKTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRpc2FibGVkSXRlbUhhbmRsZXI6IFR1aUJvb2xlYW5IYW5kbGVyPFR1aURheT4gPSBUVUlfRkFMU0VfSEFORExFUjtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG1hcmtlckhhbmRsZXI6IFR1aU1hcmtlckhhbmRsZXIgfCBudWxsID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHZhbHVlOiBUdWlEYXkgfCBUdWlEYXlSYW5nZSB8IHJlYWRvbmx5IFR1aURheVtdIHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBob3ZlcmVkSXRlbTogVHVpRGF5IHwgbnVsbCA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzaG93QWRqYWNlbnQgPSB0cnVlO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGhvdmVyZWRJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXkgfCBudWxsPigpO1xuXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHJlYWRvbmx5IGRheUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxUdWlEYXk+KCk7XG5cbiAgICBwdWJsaWMgaXRlbUlzSW50ZXJ2YWwoZGF5OiBUdWlEYXkpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3Qge3ZhbHVlLCBob3ZlcmVkSXRlbX0gPSB0aGlzO1xuXG4gICAgICAgIGlmICghKHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZhbHVlLmlzU2luZ2xlRGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuZnJvbS5kYXlTYW1lT3JCZWZvcmUoZGF5KSAmJiB2YWx1ZS50by5kYXlBZnRlcihkYXkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGhvdmVyZWRJdGVtID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByYW5nZSA9IFR1aURheVJhbmdlLnNvcnQodmFsdWUuZnJvbSwgaG92ZXJlZEl0ZW0pO1xuXG4gICAgICAgIHJldHVybiByYW5nZS5mcm9tLmRheVNhbWVPckJlZm9yZShkYXkpICYmIHJhbmdlLnRvLmRheUFmdGVyKGRheSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uSXRlbUhvdmVyZWQoaXRlbTogVHVpRGF5IHwgZmFsc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy51cGRhdGVIb3ZlcmVkSXRlbShpdGVtIHx8IG51bGwpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJdGVtUmFuZ2UoaXRlbTogVHVpRGF5KTogJ2FjdGl2ZScgfCAnZW5kJyB8ICdtaWRkbGUnIHwgJ3N0YXJ0JyB8IG51bGwge1xuICAgICAgICBjb25zdCB7dmFsdWUsIGhvdmVyZWRJdGVtfSA9IHRoaXM7XG5cbiAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgVHVpRGF5KSB7XG4gICAgICAgICAgICByZXR1cm4gdmFsdWUuZGF5U2FtZShpdGVtKSA/ICdhY3RpdmUnIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmFsdWUgfHwgISh2YWx1ZSBpbnN0YW5jZW9mIFR1aURheVJhbmdlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHZhbHVlPy5maW5kKChkYXkpID0+IGRheS5kYXlTYW1lKGl0ZW0pKSA/ICdhY3RpdmUnIDogbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJhbmdlID0gdGhpcy5nZXRSYW5nZSh2YWx1ZSwgaG92ZXJlZEl0ZW0pO1xuXG4gICAgICAgIGlmICh2YWx1ZS5pc1NpbmdsZURheSAmJiByYW5nZS5pc1NpbmdsZURheSAmJiB2YWx1ZS5mcm9tLmRheVNhbWUoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnYWN0aXZlJztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyYW5nZS5mcm9tLmRheVNhbWUoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnc3RhcnQnO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJhbmdlLnRvLmRheVNhbWUoaXRlbSkpIHtcbiAgICAgICAgICAgIHJldHVybiAnZW5kJztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByYW5nZS5mcm9tLmRheUJlZm9yZShpdGVtKSAmJiByYW5nZS50by5kYXlBZnRlcihpdGVtKSA/ICdtaWRkbGUnIDogbnVsbDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IGlzU2luZ2xlRGF5UmFuZ2UoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnZhbHVlIGluc3RhbmNlb2YgVHVpRGF5UmFuZ2UgJiYgdGhpcy52YWx1ZS5pc1NpbmdsZURheTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdG9NYXJrZXJzID0gKFxuICAgICAgICBkYXk6IFR1aURheSxcbiAgICAgICAgdG9kYXk6IGJvb2xlYW4sXG4gICAgICAgIHJhbmdlOiBzdHJpbmcgfCBudWxsLFxuICAgICAgICBtYXJrZXJIYW5kbGVyOiBUdWlNYXJrZXJIYW5kbGVyIHwgbnVsbCxcbiAgICApOiBbc3RyaW5nLCBzdHJpbmddIHwgW3N0cmluZ10gfCBudWxsID0+IHtcbiAgICAgICAgaWYgKHRvZGF5IHx8IFsnYWN0aXZlJywgJ2VuZCcsICdzdGFydCddLmluY2x1ZGVzKHJhbmdlIHx8ICcnKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtYXJrZXJzID0gbWFya2VySGFuZGxlcj8uKGRheSk7XG5cbiAgICAgICAgcmV0dXJuIG1hcmtlcnM/Lmxlbmd0aCA/IG1hcmtlcnMgOiBudWxsO1xuICAgIH07XG5cbiAgICBwcm90ZWN0ZWQgaXRlbUlzVG9kYXkoaXRlbTogVHVpRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnRvZGF5LmRheVNhbWUoaXRlbSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGl0ZW1Jc1VuYXZhaWxhYmxlKGl0ZW06IFR1aURheSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gIXRoaXMubW9udGgubW9udGhTYW1lKGl0ZW0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkl0ZW1DbGljayhpdGVtOiBUdWlEYXkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kYXlDbGljay5lbWl0KGl0ZW0pO1xuICAgIH1cblxuICAgIEB0dWlQdXJlXG4gICAgcHJpdmF0ZSBnZXRSYW5nZSh2YWx1ZTogVHVpRGF5UmFuZ2UsIGhvdmVyZWRJdGVtOiBUdWlEYXkgfCBudWxsKTogVHVpRGF5UmFuZ2Uge1xuICAgICAgICByZXR1cm4gdmFsdWUuaXNTaW5nbGVEYXlcbiAgICAgICAgICAgID8gVHVpRGF5UmFuZ2Uuc29ydCh2YWx1ZS5mcm9tLCBob3ZlcmVkSXRlbSA/PyB2YWx1ZS50bylcbiAgICAgICAgICAgIDogdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3ZlcmVkSXRlbShkYXk6IFR1aURheSB8IG51bGwpOiB2b2lkIHtcbiAgICAgICAgaWYgKHR1aU51bGxhYmxlU2FtZSh0aGlzLmhvdmVyZWRJdGVtLCBkYXksIChhLCBiKSA9PiBhLmRheVNhbWUoYikpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtID0gZGF5O1xuICAgICAgICB0aGlzLmhvdmVyZWRJdGVtQ2hhbmdlLmVtaXQoZGF5KTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwidC1yb3cgdC1yb3dfd2Vla2RheVwiPlxuICAgIDxkaXZcbiAgICAgICAgKm5nRm9yPVwibGV0IGRheSBvZiB1bm9yZGVyZWRXZWVrRGF5cyQgfCB0dWlPcmRlcldlZWtEYXlzIHwgYXN5bmNcIlxuICAgICAgICBjbGFzcz1cInQtY2VsbFwiXG4gICAgICAgIFt0ZXh0Q29udGVudF09XCJkYXlcIlxuICAgID48L2Rpdj5cbjwvZGl2PlxuPGRpdiAqdHVpTGV0PVwibW9udGggfCB0dWlDYWxlbmRhclNoZWV0OiB0cnVlIGFzIHNoZWV0XCI+XG4gICAgPGRpdlxuICAgICAgICAqdHVpUmVwZWF0VGltZXM9XCJsZXQgcm93SW5kZXggb2Ygc2hlZXQubGVuZ3RoXCJcbiAgICAgICAgYXV0b21hdGlvbi1pZD1cInR1aS1jYWxlbmRhci1zaGVldF9fcm93XCJcbiAgICAgICAgY2xhc3M9XCJ0LXJvd1wiXG4gICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICp0dWlSZXBlYXRUaW1lcz1cImxldCBjb2xJbmRleCBvZiBzaGVldFtyb3dJbmRleF0/Lmxlbmd0aCB8fCAwXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICp0dWlMZXQ9XCJzaGVldFtyb3dJbmRleF0/Lltjb2xJbmRleF0gYXMgaXRlbVwiPlxuICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJpdGVtICYmICghaXRlbUlzVW5hdmFpbGFibGUoaXRlbSkgfHwgc2hvd0FkamFjZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpb24taWQ9XCJ0dWktY2FsZW5kYXItc2hlZXRfX2NlbGxcIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtY2VsbFwiXG4gICAgICAgICAgICAgICAgICAgIFthdHRyLmRhdGEtcmFuZ2VdPVwiZ2V0SXRlbVJhbmdlKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10eXBlXT1cIml0ZW0gfCB0dWlNYXBwZXI6IGRheVR5cGVIYW5kbGVyXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtY2VsbF9kaXNhYmxlZF09XCJkaXNhYmxlZEl0ZW1IYW5kbGVyKGl0ZW0pXCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnQtY2VsbF90b2RheV09XCJpdGVtSXNUb2RheShpdGVtKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy50LWNlbGxfdW5hdmFpbGFibGVdPVwiaXRlbUlzVW5hdmFpbGFibGUoaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25JdGVtQ2xpY2soaXRlbSlcIlxuICAgICAgICAgICAgICAgICAgICAodHVpSG92ZXJlZENoYW5nZSk9XCJvbkl0ZW1Ib3ZlcmVkKCRldmVudCAmJiBpdGVtKVwiXG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7eyBpdGVtLmRheSB9fVxuICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB0dWlNYXBwZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdG9NYXJrZXJzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW1Jc1RvZGF5KGl0ZW0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGdldEl0ZW1SYW5nZShpdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtYXJrZXJIYW5kbGVyIGFzIG1hcmtlcnNcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZG90c1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZG90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJtYXJrZXJzPy5bMF1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwibWFya2Vycy5sZW5ndGggPiAxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInQtZG90XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZF09XCJtYXJrZXJzPy5bMV0gfHwgJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19