@progressio_resources/gravity-design-system 3.0.49 → 3.0.51

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 (21) hide show
  1. package/esm2022/lib/components/gravity-calendar-next/components/day-calendar/day-calendar.component.mjs +216 -0
  2. package/esm2022/lib/components/gravity-calendar-next/components/month-calendary/month-calendar.component.mjs +88 -0
  3. package/esm2022/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.mjs +96 -0
  4. package/esm2022/lib/components/gravity-calendar-next/gravity-calendar-next.component.mjs +13 -9
  5. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.constants.mjs +7 -1
  6. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.modal.mjs +1 -1
  7. package/esm2022/lib/components/gravity-calendar-next/shared/calendar.utils.mjs +21 -6
  8. package/esm2022/lib/components/gravity-tab-primary/gravity-tab-primary.component.mjs +2 -2
  9. package/esm2022/lib/gravity-design-system.module.mjs +10 -4
  10. package/fesm2022/progressio_resources-gravity-design-system.mjs +221 -26
  11. package/fesm2022/progressio_resources-gravity-design-system.mjs.map +1 -1
  12. package/lib/components/gravity-calendar-next/components/{days-calendar/days-calendar.component.d.ts → day-calendar/day-calendar.component.d.ts} +4 -4
  13. package/lib/components/gravity-calendar-next/components/month-calendary/month-calendar.component.d.ts +34 -0
  14. package/lib/components/gravity-calendar-next/components/year-calendar/year-calendar.component.d.ts +34 -0
  15. package/lib/components/gravity-calendar-next/gravity-calendar-next.component.d.ts +4 -3
  16. package/lib/components/gravity-calendar-next/shared/calendar.constants.d.ts +2 -0
  17. package/lib/components/gravity-calendar-next/shared/calendar.modal.d.ts +4 -0
  18. package/lib/components/gravity-calendar-next/shared/calendar.utils.d.ts +7 -2
  19. package/lib/gravity-design-system.module.d.ts +12 -10
  20. package/package.json +1 -1
  21. package/esm2022/lib/components/gravity-calendar-next/components/days-calendar/days-calendar.component.mjs +0 -216
@@ -2,7 +2,7 @@ import { CalendarDay } from "../../shared/calendar.modal";
2
2
  import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
3
3
  import { changeMonth, trackByWeek, trackByDay } from '../../shared/calendar.utils';
4
4
  import * as i0 from "@angular/core";
5
- export declare class DaysCalendarComponent implements OnChanges {
5
+ export declare class DayCalendarComponent implements OnChanges {
6
6
  range: boolean;
7
7
  restart: boolean;
8
8
  disabled: boolean;
@@ -10,7 +10,7 @@ export declare class DaysCalendarComponent implements OnChanges {
10
10
  preSelectedDate: Date | Date[];
11
11
  actionsSection: boolean;
12
12
  navType: 'prev' | 'next' | 'both';
13
- clearSelectionDate: EventEmitter<void>;
13
+ clearSelection: EventEmitter<void>;
14
14
  calendarResponse: EventEmitter<Date[] | Date>;
15
15
  protected readonly trackByDay: typeof trackByDay;
16
16
  protected readonly trackByWeek: typeof trackByWeek;
@@ -42,6 +42,6 @@ export declare class DaysCalendarComponent implements OnChanges {
42
42
  clearHover(): void;
43
43
  onSelectDay(day: CalendarDay): void;
44
44
  getMonthGrid(): CalendarDay[][];
45
- static ɵfac: i0.ɵɵFactoryDeclaration<DaysCalendarComponent, never>;
46
- static ɵcmp: i0.ɵɵComponentDeclaration<DaysCalendarComponent, "days-calendar", never, { "range": { "alias": "range"; "required": false; }; "restart": { "alias": "restart"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "actionsSection": { "alias": "actionsSection"; "required": false; }; "navType": { "alias": "navType"; "required": false; }; }, { "clearSelectionDate": "clearSelectionDate"; "calendarResponse": "response"; }, never, never, false, never>;
45
+ static ɵfac: i0.ɵɵFactoryDeclaration<DayCalendarComponent, never>;
46
+ static ɵcmp: i0.ɵɵComponentDeclaration<DayCalendarComponent, "day-calendar", never, { "range": { "alias": "range"; "required": false; }; "restart": { "alias": "restart"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "actionsSection": { "alias": "actionsSection"; "required": false; }; "navType": { "alias": "navType"; "required": false; }; }, { "clearSelection": "clearSelection"; "calendarResponse": "response"; }, never, never, false, never>;
47
47
  }
@@ -0,0 +1,34 @@
1
+ import { CalendarMonth } from "../../shared/calendar.modal";
2
+ import { changeYear, trackByMonth } from "../../shared/calendar.utils";
3
+ import { EventEmitter, OnChanges, SimpleChanges } from '@angular/core';
4
+ import * as i0 from "@angular/core";
5
+ export declare class MonthCalendarComponent implements OnChanges {
6
+ restart: boolean;
7
+ disabled: boolean;
8
+ language: 'es' | 'en';
9
+ preSelectedDate: Date | Date[];
10
+ actionsSection: boolean;
11
+ clearSelection: EventEmitter<void>;
12
+ calendarResponse: EventEmitter<Date[] | Date>;
13
+ protected readonly changeYear: typeof changeYear;
14
+ protected readonly trackByMonth: typeof trackByMonth;
15
+ selectedMonth: CalendarMonth;
16
+ currentDate: Date;
17
+ get i18n(): {
18
+ readonly apply: "Apply";
19
+ readonly clear: "Clear selection";
20
+ } | {
21
+ readonly apply: "Aplicar";
22
+ readonly clear: "Limpiar selección";
23
+ };
24
+ get monthsList(): string[];
25
+ ngOnChanges(changes: SimpleChanges): void;
26
+ private processPreselectedDate;
27
+ onSelectMonth(month: CalendarMonth): void;
28
+ getMonthSelectionClass(month: CalendarMonth): string;
29
+ clearSelectedMonth(): void;
30
+ applySelectedMonth(): void;
31
+ getYearMonthsList(): CalendarMonth[];
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<MonthCalendarComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<MonthCalendarComponent, "month-calendary", never, { "restart": { "alias": "restart"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "actionsSection": { "alias": "actionsSection"; "required": false; }; }, { "clearSelection": "clearSelection"; "calendarResponse": "response"; }, never, never, false, never>;
34
+ }
@@ -0,0 +1,34 @@
1
+ import { trackByYear } from "../../shared/calendar.utils";
2
+ import { EventEmitter, SimpleChanges } from '@angular/core';
3
+ import * as i0 from "@angular/core";
4
+ export declare class YearCalendarComponent {
5
+ restart: boolean;
6
+ disabled: boolean;
7
+ language: 'es' | 'en';
8
+ preSelectedDate: Date | Date[];
9
+ actionsSection: boolean;
10
+ clearSelection: EventEmitter<void>;
11
+ calendarResponse: EventEmitter<Date[] | Date>;
12
+ startYear: number;
13
+ selectedYear: number;
14
+ currentDate: Date;
15
+ get i18n(): {
16
+ readonly apply: "Apply";
17
+ readonly clear: "Clear selection";
18
+ } | {
19
+ readonly apply: "Aplicar";
20
+ readonly clear: "Limpiar selección";
21
+ };
22
+ ngOnInit(): void;
23
+ ngOnChanges(changes: SimpleChanges): void;
24
+ private processPreselectedDate;
25
+ setYearsBlock(year: number): void;
26
+ onSelectYear(year: number): void;
27
+ getYearSelectionClass(year: number): string;
28
+ clearSelectedYear(): void;
29
+ applySelectedYear(): void;
30
+ getYearList(): number[];
31
+ protected readonly trackByYear: typeof trackByYear;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<YearCalendarComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<YearCalendarComponent, "year-calendar", never, { "restart": { "alias": "restart"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "actionsSection": { "alias": "actionsSection"; "required": false; }; }, { "clearSelection": "clearSelection"; "calendarResponse": "response"; }, never, never, false, never>;
34
+ }
@@ -2,15 +2,16 @@ import { EventEmitter } from '@angular/core';
2
2
  import * as i0 from "@angular/core";
3
3
  export declare class GravityCalendarNextComponent {
4
4
  selectedDate: Date[] | Date;
5
- dual: boolean;
6
- range: boolean;
5
+ cypressTag: string;
7
6
  language: 'es' | 'en';
7
+ actionsSection: boolean;
8
8
  preSelectedDate: Date | Date[] | null;
9
9
  state: 'active' | 'hidden' | 'disabled';
10
+ calendarType: 'day' | 'range' | 'month' | 'year' | 'dual';
10
11
  clearEvent: EventEmitter<void>;
11
12
  calendarResponse: EventEmitter<Date[] | Date>;
12
13
  handleClear(): void;
13
14
  handleResponse(value: Date[] | Date): void;
14
15
  static ɵfac: i0.ɵɵFactoryDeclaration<GravityCalendarNextComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<GravityCalendarNextComponent, "gravity-calendar-next", never, { "dual": { "alias": "dual"; "required": false; }; "range": { "alias": "range"; "required": false; }; "language": { "alias": "language"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "state": { "alias": "state"; "required": false; }; }, { "clearEvent": "clear"; "calendarResponse": "response"; }, never, never, false, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<GravityCalendarNextComponent, "gravity-calendar-next", never, { "cypressTag": { "alias": "cypressTag"; "required": false; }; "language": { "alias": "language"; "required": false; }; "actionsSection": { "alias": "actionsSection"; "required": false; }; "preSelectedDate": { "alias": "preSelectedDate"; "required": false; }; "state": { "alias": "state"; "required": false; }; "calendarType": { "alias": "calendarType"; "required": false; }; }, { "clearEvent": "clear"; "calendarResponse": "response"; }, never, never, false, never>;
16
17
  }
@@ -2,6 +2,8 @@ export declare const DAYS_ES: string[];
2
2
  export declare const DAYS_EN: string[];
3
3
  export declare const MONTHS_ES: string[];
4
4
  export declare const MONTHS_EN: string[];
5
+ export declare const MONTHS_ES_SHORT: string[];
6
+ export declare const MONTHS_EN_SHORT: string[];
5
7
  export declare const CALENDAR_I18N: {
6
8
  readonly en: {
7
9
  readonly apply: "Apply";
@@ -5,3 +5,7 @@ export interface CalendarDay {
5
5
  isToday: boolean;
6
6
  inCurrentMonth: boolean;
7
7
  }
8
+ export interface CalendarMonth {
9
+ year: number;
10
+ month: number;
11
+ }
@@ -1,7 +1,12 @@
1
- import { CalendarDay } from "./calendar.modal";
1
+ import { CalendarDay, CalendarMonth } from "./calendar.modal";
2
2
  export declare function trackByWeek(index: number, _: any): number;
3
3
  export declare function trackByDay(_: number, day: CalendarDay): string;
4
+ export declare function trackByMonth(_: number, month: CalendarMonth): string;
5
+ export declare function trackByYear(_: number, year: number): string;
4
6
  export declare function toDate(day: CalendarDay): Date;
5
- export declare function getMonthStart(date: Date): Date;
7
+ export declare function toMonth(month: CalendarMonth): Date;
8
+ export declare function getStartDate(date: Date): Date;
6
9
  export declare function changeMonth(offset: number, currentDate: Date): Date;
10
+ export declare function changeYear(offset: number, currentDate: Date): Date;
7
11
  export declare function toCalendarDay(date: Date): CalendarDay;
12
+ export declare function toCalendarMonth(date: Date): CalendarMonth;
@@ -59,17 +59,19 @@ import * as i57 from "./components/gravity-navigation-card/gravity-navigation-ca
59
59
  import * as i58 from "./components/gravity-generic-avatar-secondary/gravity-generic-avatar-secondary.component";
60
60
  import * as i59 from "./components/gravity-backdrop/gravity-backdrop.component";
61
61
  import * as i60 from "./components/gravity-calendar-next/gravity-calendar-next.component";
62
- import * as i61 from "./components/gravity-calendar-next/components/days-calendar/days-calendar.component";
63
- import * as i62 from "angular-svg-icon";
64
- import * as i63 from "angular-svg-icon-preloader";
65
- import * as i64 from "ngx-bootstrap/datepicker";
66
- import * as i65 from "@angular/common";
67
- import * as i66 from "@angular/forms";
68
- import * as i67 from "./vendor/gravity-tooltip/gravity-tooltip.module";
69
- import * as i68 from "@ng-bootstrap/ng-bootstrap";
70
- import * as i69 from "@angular/router";
62
+ import * as i61 from "./components/gravity-calendar-next/components/day-calendar/day-calendar.component";
63
+ import * as i62 from "./components/gravity-calendar-next/components/month-calendary/month-calendar.component";
64
+ import * as i63 from "./components/gravity-calendar-next/components/year-calendar/year-calendar.component";
65
+ import * as i64 from "angular-svg-icon";
66
+ import * as i65 from "angular-svg-icon-preloader";
67
+ import * as i66 from "ngx-bootstrap/datepicker";
68
+ import * as i67 from "@angular/common";
69
+ import * as i68 from "@angular/forms";
70
+ import * as i69 from "./vendor/gravity-tooltip/gravity-tooltip.module";
71
+ import * as i70 from "@ng-bootstrap/ng-bootstrap";
72
+ import * as i71 from "@angular/router";
71
73
  export declare class GravityDesignSystemModule {
72
74
  static ɵfac: i0.ɵɵFactoryDeclaration<GravityDesignSystemModule, never>;
73
- static ɵmod: i0.ɵɵNgModuleDeclaration<GravityDesignSystemModule, [typeof i1.GravityAttachFileComponent, typeof i2.GravityAvatarStackComponent, typeof i3.GravityGenericAvatarComponent, typeof i4.GravityButtonComponent, typeof i5.GravityCalendarComponent, typeof i6.GravityCalendarV2Component, typeof i7.GravityCardListComponent, typeof i8.GravityCheckboxComponent, typeof i9.GravityCurrencyComponent, typeof i10.GravityCurrencyDisplayComponent, typeof i11.GravityDataViewComponent, typeof i12.GravityDialogComponent, typeof i13.GravityDropdownListComponent, typeof i14.GravityDropdownListDisplayComponent, typeof i15.GravityIconButtonComponent, typeof i16.GravityIconComponent, typeof i17.GravityMultiLanguageComponent, typeof i18.GravityNetworkPillComponent, typeof i19.GravityNotificationComponent, typeof i20.GravityNotificationInstantContainerComponent, typeof i21.GravityOffcanvasComponent, typeof i22.GravityRadioButtonComponent, typeof i23.GravityStatusIndicatorComponent, typeof i24.GravityStepperComponent, typeof i25.GravitySwitchComponent, typeof i26.GravityTableComponent, typeof i27.GravityTextFieldComponent, typeof i28.GravityTextFieldNumberOnlyComponent, typeof i29.GravityTreeViewComponent, typeof i30.NodeComponent, typeof i31.NodeToggleComponent, typeof i32.NodeCheckboxComponent, typeof i33.NodeNameComponent, typeof i34.FilterByPipe, typeof i35.DateAbbreviationPipe, typeof i36.BsDatepickerDayDecoratorComponent, typeof i37.BsDatepickerNavigationViewComponent, typeof i38.BsDaysCalendarViewComponent, typeof i39.BsMonthCalendarViewComponent, typeof i40.BsYearsCalendarViewComponent, typeof i41.BsDatepickerContainerComponent, typeof i42.BsDatepickerDirective, typeof i43.BsDatepickerInlineContainerComponent, typeof i44.BsDatepickerInlineDirective, typeof i45.BsDaterangepickerContainerComponent, typeof i46.BsDaterangepickerDirective, typeof i47.BsDaterangepickerInlineContainerComponent, typeof i48.BsDaterangepickerInlineDirective, typeof i49.GravityModalComponent, typeof i50.GravityLinkComponent, typeof i51.GravityTabPrimaryComponent, typeof i52.GravityTabSecondaryComponent, typeof i53.GravityChipComponent, typeof i54.GravityEditableInputComponent, typeof i55.GravityCardButtonComponent, typeof i56.GravityDropdownLabelComponent, typeof i57.GravityNavigationCardComponent, typeof i58.GravityGenericAvatarSecondaryComponent, typeof i59.GravityBackdropComponent, typeof i60.GravityCalendarNextComponent, typeof i61.DaysCalendarComponent], [typeof i62.AngularSvgIconModule, typeof i63.AngularSvgIconPreloaderModule, typeof i64.BsDatepickerModule, typeof i65.CommonModule, typeof i66.FormsModule, typeof i67.GravityTooltipModule, typeof i68.NgbDatepickerModule, typeof i68.NgbOffcanvasModule, typeof i68.NgbProgressbarModule, typeof i68.NgbToastModule, typeof i66.ReactiveFormsModule, typeof i69.RouterLink], [typeof i1.GravityAttachFileComponent, typeof i2.GravityAvatarStackComponent, typeof i3.GravityGenericAvatarComponent, typeof i4.GravityButtonComponent, typeof i5.GravityCalendarComponent, typeof i6.GravityCalendarV2Component, typeof i7.GravityCardListComponent, typeof i8.GravityCheckboxComponent, typeof i9.GravityCurrencyComponent, typeof i10.GravityCurrencyDisplayComponent, typeof i11.GravityDataViewComponent, typeof i12.GravityDialogComponent, typeof i13.GravityDropdownListComponent, typeof i14.GravityDropdownListDisplayComponent, typeof i15.GravityIconButtonComponent, typeof i16.GravityIconComponent, typeof i17.GravityMultiLanguageComponent, typeof i18.GravityNetworkPillComponent, typeof i20.GravityNotificationInstantContainerComponent, typeof i21.GravityOffcanvasComponent, typeof i22.GravityRadioButtonComponent, typeof i23.GravityStatusIndicatorComponent, typeof i24.GravityStepperComponent, typeof i25.GravitySwitchComponent, typeof i26.GravityTableComponent, typeof i27.GravityTextFieldComponent, typeof i28.GravityTextFieldNumberOnlyComponent, typeof i67.GravityTooltipModule, typeof i29.GravityTreeViewComponent, typeof i49.GravityModalComponent, typeof i50.GravityLinkComponent, typeof i51.GravityTabPrimaryComponent, typeof i52.GravityTabSecondaryComponent, typeof i53.GravityChipComponent, typeof i54.GravityEditableInputComponent, typeof i55.GravityCardButtonComponent, typeof i57.GravityNavigationCardComponent, typeof i58.GravityGenericAvatarSecondaryComponent, typeof i59.GravityBackdropComponent, typeof i60.GravityCalendarNextComponent]>;
75
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GravityDesignSystemModule, [typeof i1.GravityAttachFileComponent, typeof i2.GravityAvatarStackComponent, typeof i3.GravityGenericAvatarComponent, typeof i4.GravityButtonComponent, typeof i5.GravityCalendarComponent, typeof i6.GravityCalendarV2Component, typeof i7.GravityCardListComponent, typeof i8.GravityCheckboxComponent, typeof i9.GravityCurrencyComponent, typeof i10.GravityCurrencyDisplayComponent, typeof i11.GravityDataViewComponent, typeof i12.GravityDialogComponent, typeof i13.GravityDropdownListComponent, typeof i14.GravityDropdownListDisplayComponent, typeof i15.GravityIconButtonComponent, typeof i16.GravityIconComponent, typeof i17.GravityMultiLanguageComponent, typeof i18.GravityNetworkPillComponent, typeof i19.GravityNotificationComponent, typeof i20.GravityNotificationInstantContainerComponent, typeof i21.GravityOffcanvasComponent, typeof i22.GravityRadioButtonComponent, typeof i23.GravityStatusIndicatorComponent, typeof i24.GravityStepperComponent, typeof i25.GravitySwitchComponent, typeof i26.GravityTableComponent, typeof i27.GravityTextFieldComponent, typeof i28.GravityTextFieldNumberOnlyComponent, typeof i29.GravityTreeViewComponent, typeof i30.NodeComponent, typeof i31.NodeToggleComponent, typeof i32.NodeCheckboxComponent, typeof i33.NodeNameComponent, typeof i34.FilterByPipe, typeof i35.DateAbbreviationPipe, typeof i36.BsDatepickerDayDecoratorComponent, typeof i37.BsDatepickerNavigationViewComponent, typeof i38.BsDaysCalendarViewComponent, typeof i39.BsMonthCalendarViewComponent, typeof i40.BsYearsCalendarViewComponent, typeof i41.BsDatepickerContainerComponent, typeof i42.BsDatepickerDirective, typeof i43.BsDatepickerInlineContainerComponent, typeof i44.BsDatepickerInlineDirective, typeof i45.BsDaterangepickerContainerComponent, typeof i46.BsDaterangepickerDirective, typeof i47.BsDaterangepickerInlineContainerComponent, typeof i48.BsDaterangepickerInlineDirective, typeof i49.GravityModalComponent, typeof i50.GravityLinkComponent, typeof i51.GravityTabPrimaryComponent, typeof i52.GravityTabSecondaryComponent, typeof i53.GravityChipComponent, typeof i54.GravityEditableInputComponent, typeof i55.GravityCardButtonComponent, typeof i56.GravityDropdownLabelComponent, typeof i57.GravityNavigationCardComponent, typeof i58.GravityGenericAvatarSecondaryComponent, typeof i59.GravityBackdropComponent, typeof i60.GravityCalendarNextComponent, typeof i61.DayCalendarComponent, typeof i62.MonthCalendarComponent, typeof i63.YearCalendarComponent], [typeof i64.AngularSvgIconModule, typeof i65.AngularSvgIconPreloaderModule, typeof i66.BsDatepickerModule, typeof i67.CommonModule, typeof i68.FormsModule, typeof i69.GravityTooltipModule, typeof i70.NgbDatepickerModule, typeof i70.NgbOffcanvasModule, typeof i70.NgbProgressbarModule, typeof i70.NgbToastModule, typeof i68.ReactiveFormsModule, typeof i71.RouterLink], [typeof i1.GravityAttachFileComponent, typeof i2.GravityAvatarStackComponent, typeof i3.GravityGenericAvatarComponent, typeof i4.GravityButtonComponent, typeof i5.GravityCalendarComponent, typeof i6.GravityCalendarV2Component, typeof i7.GravityCardListComponent, typeof i8.GravityCheckboxComponent, typeof i9.GravityCurrencyComponent, typeof i10.GravityCurrencyDisplayComponent, typeof i11.GravityDataViewComponent, typeof i12.GravityDialogComponent, typeof i13.GravityDropdownListComponent, typeof i14.GravityDropdownListDisplayComponent, typeof i15.GravityIconButtonComponent, typeof i16.GravityIconComponent, typeof i17.GravityMultiLanguageComponent, typeof i18.GravityNetworkPillComponent, typeof i20.GravityNotificationInstantContainerComponent, typeof i21.GravityOffcanvasComponent, typeof i22.GravityRadioButtonComponent, typeof i23.GravityStatusIndicatorComponent, typeof i24.GravityStepperComponent, typeof i25.GravitySwitchComponent, typeof i26.GravityTableComponent, typeof i27.GravityTextFieldComponent, typeof i28.GravityTextFieldNumberOnlyComponent, typeof i69.GravityTooltipModule, typeof i29.GravityTreeViewComponent, typeof i49.GravityModalComponent, typeof i50.GravityLinkComponent, typeof i51.GravityTabPrimaryComponent, typeof i52.GravityTabSecondaryComponent, typeof i53.GravityChipComponent, typeof i54.GravityEditableInputComponent, typeof i55.GravityCardButtonComponent, typeof i57.GravityNavigationCardComponent, typeof i58.GravityGenericAvatarSecondaryComponent, typeof i59.GravityBackdropComponent, typeof i60.GravityCalendarNextComponent]>;
74
76
  static ɵinj: i0.ɵɵInjectorDeclaration<GravityDesignSystemModule>;
75
77
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@progressio_resources/gravity-design-system",
3
3
  "description": "Gravity Design System",
4
- "version": "3.0.49",
4
+ "version": "3.0.51",
5
5
  "license": "SEE LICENSE IN LIBRARY-LICENSE",
6
6
  "peerDependencies": {
7
7
  "@angular/common": "^16.2.12",
@@ -1,216 +0,0 @@
1
- import { Component, EventEmitter, Input, Output } from '@angular/core';
2
- import { CALENDAR_I18N, DAYS_EN, DAYS_ES, MONTHS_EN, MONTHS_ES } from "../../shared/calendar.constants";
3
- import { toDate, getMonthStart, changeMonth, toCalendarDay, trackByWeek, trackByDay, } from '../../shared/calendar.utils';
4
- import * as i0 from "@angular/core";
5
- import * as i1 from "@angular/common";
6
- import * as i2 from "../../../gravity-button/gravity-button.component";
7
- import * as i3 from "../../../gravity-icon/gravity-icon.component";
8
- import * as i4 from "../../../gravity-link/gravity-link.component";
9
- import * as i5 from "../../../gravity-dropdown-label/gravity-dropdown-label.component";
10
- export class DaysCalendarComponent {
11
- constructor() {
12
- this.range = false;
13
- this.restart = false;
14
- this.disabled = false;
15
- this.language = 'en';
16
- this.actionsSection = true;
17
- this.navType = 'both';
18
- this.clearSelectionDate = new EventEmitter();
19
- this.calendarResponse = new EventEmitter();
20
- this.trackByDay = trackByDay;
21
- this.trackByWeek = trackByWeek;
22
- this.changeMonth = changeMonth;
23
- this.currentDate = new Date();
24
- this.hoveredDay = null;
25
- this.selectedDay = null;
26
- this.selectedRangeEnd = null;
27
- this.selectedRangeStart = null;
28
- }
29
- get i18n() { return CALENDAR_I18N[this.language]; }
30
- get daysList() { return this.language === 'en' ? DAYS_EN : DAYS_ES; }
31
- get monthsList() { return this.language === 'en' ? MONTHS_EN : MONTHS_ES; }
32
- ngOnChanges(changes) {
33
- const shouldRestart = changes['restart'] && this.restart;
34
- const shouldProcessPreSelected = changes['preSelectedDate'] && this.preSelectedDate;
35
- if (shouldRestart || shouldProcessPreSelected) {
36
- this.processPreselectedDate();
37
- }
38
- }
39
- processPreselectedDate() {
40
- if (this.range && Array.isArray(this.preSelectedDate)) {
41
- const [start, end] = this.preSelectedDate;
42
- if (start instanceof Date) {
43
- this.selectedRangeStart = toCalendarDay(start);
44
- this.currentDate = getMonthStart(start);
45
- }
46
- if (end instanceof Date) {
47
- this.selectedRangeEnd = toCalendarDay(end);
48
- }
49
- }
50
- else if (this.preSelectedDate instanceof Date) {
51
- this.selectedDay = toCalendarDay(this.preSelectedDate);
52
- this.currentDate = getMonthStart(this.preSelectedDate);
53
- }
54
- }
55
- isDateSelected() {
56
- if (!this.range) {
57
- return !!this.selectedDay;
58
- }
59
- else {
60
- return !!this.selectedRangeStart && !!this.selectedRangeEnd;
61
- }
62
- }
63
- isPreview(day) {
64
- if (!this.selectedRangeStart || this.selectedRangeEnd || !this.hoveredDay) {
65
- return false;
66
- }
67
- const current = toDate(day);
68
- const hover = toDate(this.hoveredDay);
69
- const start = toDate(this.selectedRangeStart);
70
- if (hover <= start) {
71
- return false;
72
- }
73
- return current > start && current <= hover;
74
- }
75
- getDaySelectionClass(day) {
76
- if (!day.inCurrentMonth)
77
- return 'disabled';
78
- return this.range ? this.getRangeSelectionClass(day) : this.getSingleDaySelectionClass(day);
79
- }
80
- getSingleDaySelectionClass(day) {
81
- if (this.selectedDay && day.day === this.selectedDay.day &&
82
- day.month === this.selectedDay.month && day.year === this.selectedDay.year) {
83
- return 'sl single';
84
- }
85
- return '';
86
- }
87
- getRangeSelectionClass(day) {
88
- if (!this.selectedRangeStart)
89
- return 'nsl-start';
90
- const current = toDate(day);
91
- const start = toDate(this.selectedRangeStart);
92
- if (!this.selectedRangeEnd) {
93
- if (current.getTime() === start.getTime())
94
- return 'sl start';
95
- if (this.hoveredDay) {
96
- const hover = toDate(this.hoveredDay);
97
- if (current.getTime() === hover.getTime() && hover < start)
98
- return 'nsl-start';
99
- }
100
- return 'nsl-end';
101
- }
102
- const end = toDate(this.selectedRangeEnd);
103
- if (current.getTime() === start.getTime())
104
- return 'sl start';
105
- if (current.getTime() === end.getTime())
106
- return 'sl end';
107
- if (current > start && current < end)
108
- return 'sl range';
109
- return 'nsl-start';
110
- }
111
- applySelectedDate() {
112
- if (!this.range && this.selectedDay) {
113
- const date = toDate(this.selectedDay);
114
- this.calendarResponse.emit(date);
115
- }
116
- else if (this.range && this.selectedRangeStart && this.selectedRangeEnd) {
117
- const start = toDate(this.selectedRangeStart);
118
- const end = toDate(this.selectedRangeEnd);
119
- this.calendarResponse.emit([start, end]);
120
- }
121
- }
122
- clearSelectedDate() {
123
- this.selectedDay = null;
124
- this.selectedRangeEnd = null;
125
- this.selectedRangeStart = null;
126
- this.clearSelectionDate.emit();
127
- }
128
- onHoverDay(day) {
129
- if (this.selectedRangeEnd) {
130
- return;
131
- }
132
- this.hoveredDay = day;
133
- }
134
- clearHover() { this.hoveredDay = null; }
135
- onSelectDay(day) {
136
- if (!day.inCurrentMonth)
137
- return;
138
- if (!this.range) {
139
- this.selectedDay = day;
140
- const currentDate = toDate(day);
141
- this.calendarResponse.emit(currentDate);
142
- return;
143
- }
144
- if (!this.selectedRangeStart || this.selectedRangeEnd) {
145
- this.selectedRangeStart = day;
146
- this.selectedRangeEnd = null;
147
- }
148
- else {
149
- const selectedDate = toDate(day);
150
- const startDate = toDate(this.selectedRangeStart);
151
- selectedDate >= startDate ? this.selectedRangeEnd = day : this.selectedRangeStart = day;
152
- }
153
- }
154
- getMonthGrid() {
155
- let week = [];
156
- const today = new Date();
157
- const grid = [];
158
- const baseDate = this.currentDate;
159
- const month = baseDate.getMonth();
160
- const year = baseDate.getFullYear();
161
- const firstDay = new Date(year, month, 1);
162
- const startWeekday = (firstDay.getDay() + 6) % 7;
163
- const daysInMonth = new Date(year, month + 1, 0).getDate();
164
- const daysInPrevMonth = new Date(year, month, 0).getDate();
165
- // fill days from previous month
166
- for (let i = startWeekday - 1; i >= 0; i--) {
167
- const day = daysInPrevMonth - i;
168
- week.push({ day, month: month - 1, year, isToday: false, inCurrentMonth: false });
169
- }
170
- // fill days from current month
171
- for (let d = 1; d <= daysInMonth; d++) {
172
- const isToday = d === today.getDate() && month === today.getMonth() && year === today.getFullYear();
173
- week.push({ day: d, month, year, isToday, inCurrentMonth: true });
174
- if (week.length === 7) {
175
- grid.push(week);
176
- week = [];
177
- }
178
- }
179
- // fill remaining days from next month
180
- let nextDay = 1;
181
- while (week.length < 7) {
182
- week.push({ day: nextDay++, month: month + 1, year, isToday: false, inCurrentMonth: false });
183
- }
184
- const hasCurrentMonthDay = week.some(day => day.inCurrentMonth);
185
- if (hasCurrentMonthDay) {
186
- grid.push(week);
187
- }
188
- return grid;
189
- }
190
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DaysCalendarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
191
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: DaysCalendarComponent, selector: "days-calendar", inputs: { range: "range", restart: "restart", disabled: "disabled", language: "language", preSelectedDate: "preSelectedDate", actionsSection: "actionsSection", navType: "navType" }, outputs: { clearSelectionDate: "clearSelectionDate", calendarResponse: "response" }, usesOnChanges: true, ngImport: i0, template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.GravityButtonComponent, selector: "gravity-button", inputs: ["cypressTag", "disabled", "customState", "iconPosition", "iconName", "isLoading", "showContent", "size", "type"] }, { kind: "component", type: i3.GravityIconComponent, selector: "gravity-icon", inputs: ["customIconColorVariable", "iconName", "iconSize", "hoverIcon", "size", "isCoin"] }, { kind: "component", type: i4.GravityLinkComponent, selector: "gravity-link", inputs: ["linkText", "fontClass", "link", "cypressTag", "iconName", "target", "iconPosition", "iconSize", "state"] }, { kind: "component", type: i5.GravityDropdownLabelComponent, selector: "gravity-dropdown-label", inputs: ["label", "fontClass", "isOpen", "stopPropagation", "size"], outputs: ["onClickLabel"] }] }); }
192
- }
193
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: DaysCalendarComponent, decorators: [{
194
- type: Component,
195
- args: [{ selector: 'days-calendar', template: "<section class=\"gravity-calendar-header\">\n <div class=\"previous-button\">\n <gravity-icon *ngIf=\"!(navType === 'next')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-left'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(-1, currentDate)\" ></gravity-icon>\n </div>\n\n <div class=\"month-year-label\">\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"monthsList[currentDate.getMonth()]\"></gravity-dropdown-label>\n <gravity-dropdown-label [fontClass]=\"'hr-title sm-bold'\" [size]=\"'sm'\" [label]=\"currentDate.getFullYear().toString()\"></gravity-dropdown-label>\n </div>\n\n <div class=\"next-button\">\n <gravity-icon *ngIf=\"!(navType === 'prev')\" [style.--icon-color]=\"'var(--text-highlight-primary)'\" [iconName]=\"'arrow-right'\"\n [iconSize]=\"'sm-12'\" (click)=\"currentDate = changeMonth(1, currentDate)\"></gravity-icon>\n </div>\n</section>\n\n<section class=\"gravity-calendar-body\">\n <section class=\"days-name-line\">\n <div class=\"days-name\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let day of daysList\">{{day}}</span>\n </div>\n <div class=\"separator-line\"></div>\n </section>\n\n <section class=\"days-number-selector\">\n <div class=\"days-number-table\">\n <div class=\"week-row\" *ngFor=\"let week of getMonthGrid(); trackBy: trackByWeek\">\n <span class=\"hr-body sm-regular\" *ngFor=\"let d of week; trackBy: trackByDay\"\n [ngClass]=\"disabled ? 'disabled' : getDaySelectionClass(d)\"\n [class.disabled]=\"!d.inCurrentMonth\" [class.today]=\"d.isToday\" [class.preview]=\"range ? isPreview(d) : null\"\n (click)=\"onSelectDay(d)\" (mouseenter)=\"range ? onHoverDay(d) : null\" (mouseleave)=\"range ? clearHover() : null\">\n {{ d.day }}\n </span>\n </div>\n </div>\n\n <div class=\"action-section\">\n <gravity-link *ngIf=\"actionsSection\" [linkText]=\"i18n.clear\" [state]=\"!isDateSelected() ? 'disabled' : 'active'\" (click)=\"clearSelectedDate()\"></gravity-link>\n <gravity-button *ngIf=\"actionsSection\" [size]=\"'sm'\" [type]=\"'tertiary'\" [disabled]=\"!isDateSelected()\" (click)=\"applySelectedDate()\">{{i18n.apply}}</gravity-button>\n </div>\n </section>\n</section>\n", styles: [":root{--gravity-spacing-none: 0;--gravity-spacing-xxs: .25rem;--gravity-spacing-xs: .5rem;--gravity-spacing-sm: 1rem;--gravity-spacing-md: 1.5rem;--gravity-spacing-lg: 2rem;--gravity-spacing-xl: 2.5rem;--gravity-spacing-xxl: 3rem;--gravity-spacing-xxxl: 4rem;--gravity-spacing-xxxxl: 6rem;--gravity-spacing-xxxxxl: 12rem}.gravity-padding-none{padding:0!important}.gravity-padding-top-none{padding-top:0!important}.gravity-padding-bottom-none{padding-bottom:0!important}.gravity-padding-left-none{padding-left:0!important}.gravity-padding-right-none{padding-right:0!important}.gravity-padding-block-none{padding-block:0!important}.gravity-padding-inline-none{padding-inline:0!important}.gravity-padding-xxs{padding:.25rem!important}.gravity-padding-top-xxs{padding-top:.25rem!important}.gravity-padding-bottom-xxs{padding-bottom:.25rem!important}.gravity-padding-left-xxs{padding-left:.25rem!important}.gravity-padding-right-xxs{padding-right:.25rem!important}.gravity-padding-block-xxs{padding-block:.25rem!important}.gravity-padding-inline-xxs{padding-inline:.25rem!important}.gravity-padding-xs{padding:.5rem!important}.gravity-padding-top-xs{padding-top:.5rem!important}.gravity-padding-bottom-xs{padding-bottom:.5rem!important}.gravity-padding-left-xs{padding-left:.5rem!important}.gravity-padding-right-xs{padding-right:.5rem!important}.gravity-padding-block-xs{padding-block:.5rem!important}.gravity-padding-inline-xs{padding-inline:.5rem!important}.gravity-padding-sm{padding:1rem!important}.gravity-padding-top-sm{padding-top:1rem!important}.gravity-padding-bottom-sm{padding-bottom:1rem!important}.gravity-padding-left-sm{padding-left:1rem!important}.gravity-padding-right-sm{padding-right:1rem!important}.gravity-padding-block-sm{padding-block:1rem!important}.gravity-padding-inline-sm{padding-inline:1rem!important}.gravity-padding-md{padding:1.5rem!important}.gravity-padding-top-md{padding-top:1.5rem!important}.gravity-padding-bottom-md{padding-bottom:1.5rem!important}.gravity-padding-left-md{padding-left:1.5rem!important}.gravity-padding-right-md{padding-right:1.5rem!important}.gravity-padding-block-md{padding-block:1.5rem!important}.gravity-padding-inline-md{padding-inline:1.5rem!important}.gravity-padding-lg{padding:2rem!important}.gravity-padding-top-lg{padding-top:2rem!important}.gravity-padding-bottom-lg{padding-bottom:2rem!important}.gravity-padding-left-lg{padding-left:2rem!important}.gravity-padding-right-lg{padding-right:2rem!important}.gravity-padding-block-lg{padding-block:2rem!important}.gravity-padding-inline-lg{padding-inline:2rem!important}.gravity-padding-xl{padding:2.5rem!important}.gravity-padding-top-xl{padding-top:2.5rem!important}.gravity-padding-bottom-xl{padding-bottom:2.5rem!important}.gravity-padding-left-xl{padding-left:2.5rem!important}.gravity-padding-right-xl{padding-right:2.5rem!important}.gravity-padding-block-xl{padding-block:2.5rem!important}.gravity-padding-inline-xl{padding-inline:2.5rem!important}.gravity-padding-xxl{padding:3rem!important}.gravity-padding-top-xxl{padding-top:3rem!important}.gravity-padding-bottom-xxl{padding-bottom:3rem!important}.gravity-padding-left-xxl{padding-left:3rem!important}.gravity-padding-right-xxl{padding-right:3rem!important}.gravity-padding-block-xxl{padding-block:3rem!important}.gravity-padding-inline-xxl{padding-inline:3rem!important}.gravity-padding-xxxl{padding:4rem!important}.gravity-padding-top-xxxl{padding-top:4rem!important}.gravity-padding-bottom-xxxl{padding-bottom:4rem!important}.gravity-padding-left-xxxl{padding-left:4rem!important}.gravity-padding-right-xxxl{padding-right:4rem!important}.gravity-padding-block-xxxl{padding-block:4rem!important}.gravity-padding-inline-xxxl{padding-inline:4rem!important}.gravity-padding-xxxxl{padding:6rem!important}.gravity-padding-top-xxxxl{padding-top:6rem!important}.gravity-padding-bottom-xxxxl{padding-bottom:6rem!important}.gravity-padding-left-xxxxl{padding-left:6rem!important}.gravity-padding-right-xxxxl{padding-right:6rem!important}.gravity-padding-block-xxxxl{padding-block:6rem!important}.gravity-padding-inline-xxxxl{padding-inline:6rem!important}.gravity-padding-xxxxxl{padding:12rem!important}.gravity-padding-top-xxxxxl{padding-top:12rem!important}.gravity-padding-bottom-xxxxxl{padding-bottom:12rem!important}.gravity-padding-left-xxxxxl{padding-left:12rem!important}.gravity-padding-right-xxxxxl{padding-right:12rem!important}.gravity-padding-block-xxxxxl{padding-block:12rem!important}.gravity-padding-inline-xxxxxl{padding-inline:12rem!important}.gravity-margin-none{margin:0!important}.gravity-margin-top-none{margin-top:0!important}.gravity-margin-bottom-none{margin-bottom:0!important}.gravity-margin-left-none{margin-left:0!important}.gravity-margin-right-none{margin-right:0!important}.gravity-margin-block-none{margin-block:0!important}.gravity-margin-inline-none{margin-inline:0!important}.gravity-margin-xxs{margin:.25rem!important}.gravity-margin-top-xxs{margin-top:.25rem!important}.gravity-margin-bottom-xxs{margin-bottom:.25rem!important}.gravity-margin-left-xxs{margin-left:.25rem!important}.gravity-margin-right-xxs{margin-right:.25rem!important}.gravity-margin-block-xxs{margin-block:.25rem!important}.gravity-margin-inline-xxs{margin-inline:.25rem!important}.gravity-margin-xs{margin:.5rem!important}.gravity-margin-top-xs{margin-top:.5rem!important}.gravity-margin-bottom-xs{margin-bottom:.5rem!important}.gravity-margin-left-xs{margin-left:.5rem!important}.gravity-margin-right-xs{margin-right:.5rem!important}.gravity-margin-block-xs{margin-block:.5rem!important}.gravity-margin-inline-xs{margin-inline:.5rem!important}.gravity-margin-sm{margin:1rem!important}.gravity-margin-top-sm{margin-top:1rem!important}.gravity-margin-bottom-sm{margin-bottom:1rem!important}.gravity-margin-left-sm{margin-left:1rem!important}.gravity-margin-right-sm{margin-right:1rem!important}.gravity-margin-block-sm{margin-block:1rem!important}.gravity-margin-inline-sm{margin-inline:1rem!important}.gravity-margin-md{margin:1.5rem!important}.gravity-margin-top-md{margin-top:1.5rem!important}.gravity-margin-bottom-md{margin-bottom:1.5rem!important}.gravity-margin-left-md{margin-left:1.5rem!important}.gravity-margin-right-md{margin-right:1.5rem!important}.gravity-margin-block-md{margin-block:1.5rem!important}.gravity-margin-inline-md{margin-inline:1.5rem!important}.gravity-margin-lg{margin:2rem!important}.gravity-margin-top-lg{margin-top:2rem!important}.gravity-margin-bottom-lg{margin-bottom:2rem!important}.gravity-margin-left-lg{margin-left:2rem!important}.gravity-margin-right-lg{margin-right:2rem!important}.gravity-margin-block-lg{margin-block:2rem!important}.gravity-margin-inline-lg{margin-inline:2rem!important}.gravity-margin-xl{margin:2.5rem!important}.gravity-margin-top-xl{margin-top:2.5rem!important}.gravity-margin-bottom-xl{margin-bottom:2.5rem!important}.gravity-margin-left-xl{margin-left:2.5rem!important}.gravity-margin-right-xl{margin-right:2.5rem!important}.gravity-margin-block-xl{margin-block:2.5rem!important}.gravity-margin-inline-xl{margin-inline:2.5rem!important}.gravity-margin-xxl{margin:3rem!important}.gravity-margin-top-xxl{margin-top:3rem!important}.gravity-margin-bottom-xxl{margin-bottom:3rem!important}.gravity-margin-left-xxl{margin-left:3rem!important}.gravity-margin-right-xxl{margin-right:3rem!important}.gravity-margin-block-xxl{margin-block:3rem!important}.gravity-margin-inline-xxl{margin-inline:3rem!important}.gravity-margin-xxxl{margin:4rem!important}.gravity-margin-top-xxxl{margin-top:4rem!important}.gravity-margin-bottom-xxxl{margin-bottom:4rem!important}.gravity-margin-left-xxxl{margin-left:4rem!important}.gravity-margin-right-xxxl{margin-right:4rem!important}.gravity-margin-block-xxxl{margin-block:4rem!important}.gravity-margin-inline-xxxl{margin-inline:4rem!important}.gravity-margin-xxxxl{margin:6rem!important}.gravity-margin-top-xxxxl{margin-top:6rem!important}.gravity-margin-bottom-xxxxl{margin-bottom:6rem!important}.gravity-margin-left-xxxxl{margin-left:6rem!important}.gravity-margin-right-xxxxl{margin-right:6rem!important}.gravity-margin-block-xxxxl{margin-block:6rem!important}.gravity-margin-inline-xxxxl{margin-inline:6rem!important}.gravity-margin-xxxxxl{margin:12rem!important}.gravity-margin-top-xxxxxl{margin-top:12rem!important}.gravity-margin-bottom-xxxxxl{margin-bottom:12rem!important}.gravity-margin-left-xxxxxl{margin-left:12rem!important}.gravity-margin-right-xxxxxl{margin-right:12rem!important}.gravity-margin-block-xxxxxl{margin-block:12rem!important}.gravity-margin-inline-xxxxxl{margin-inline:12rem!important}.border-radius-none{border-radius:0}.border-radius-xs{border-radius:.0625rem}.border-radius-sm{border-radius:.3125rem}.border-radius-md{border-radius:.625rem}.border-radius-lg{border-radius:.9375rem}.border-radius-xl{border-radius:1.25rem}.border-radius-xxl{border-radius:2rem}.border-radius-rounded{border-radius:6.25rem}.gravity-calendar-header{display:flex;align-items:center;justify-content:space-between}.gravity-calendar-header .month-year-label{display:flex;gap:var(--gravity-spacing-sm)}.gravity-calendar-header .next-button,.gravity-calendar-header .previous-button{cursor:pointer;margin:var(--gravity-spacing-xs)}.gravity-calendar-body{width:248px;display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center}.gravity-calendar-body .days-name-line{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-xs);padding-bottom:var(--gravity-spacing-xs)}.gravity-calendar-body .days-name-line .days-name{display:flex;align-items:center;align-self:stretch;justify-content:space-between}.gravity-calendar-body .days-name-line .days-name span{display:flex;cursor:default;align-items:center;justify-content:center;padding:var(--gravity-spacing-xs);color:var(--text-highlight-primary)}.gravity-calendar-body .days-name-line .separator-line{width:248px;border-bottom:2px solid var(--divider-menu-active-primary)}.gravity-calendar-body .days-number-selector{display:flex;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;gap:var(--gravity-spacing-sm)}.gravity-calendar-body .days-number-selector .days-number-table{display:flex;min-height:150px;align-items:center;align-self:stretch;flex-direction:column;justify-content:flex-start}.gravity-calendar-body .days-number-selector .days-number-table .week-row{height:25px;display:flex;align-items:center;align-self:stretch}.gravity-calendar-body .days-number-selector .days-number-table .week-row span{gap:10px;flex:1 0 0;display:flex;cursor:pointer;align-items:center;align-self:stretch;flex-direction:column;justify-content:center;padding:var(--gravity-spacing-xs);border-radius:var(--gravity-spacing-xs);border:2px solid var(--bg-calender-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.sl).today{border-color:var(--bg-number-calendar-hover-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled):not(.sl):hover{color:var(--on-bg-button-pressed-tertiary);background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.single,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end{color:var(--on-bg-button-pressed-primary);background:var(--bg-button-pressed-primary);border-color:var(--bg-button-pressed-primary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.range,.gravity-calendar-body .days-number-selector .days-number-table .week-row span:not(.disabled).preview{border-radius:0;background:var(--bg-button-active-tertiary);border-color:var(--bg-button-active-tertiary)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.start,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-start:hover{border-radius:var(--gravity-spacing-xs) 0 0 var(--gravity-spacing-xs)}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.end,.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-radius:0 var(--gravity-spacing-xs) var(--gravity-spacing-xs) 0}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.nsl-end:hover{border-color:var(--bg-button-pressed-primary)!important}.gravity-calendar-body .days-number-selector .days-number-table .week-row span.disabled{cursor:default;pointer-events:none;color:var(--on-bg-disabled)}.gravity-calendar-body .days-number-selector .action-section{height:25px;display:flex;align-items:center;align-self:stretch;justify-content:space-between}\n"] }]
196
- }], propDecorators: { range: [{
197
- type: Input
198
- }], restart: [{
199
- type: Input
200
- }], disabled: [{
201
- type: Input
202
- }], language: [{
203
- type: Input
204
- }], preSelectedDate: [{
205
- type: Input
206
- }], actionsSection: [{
207
- type: Input
208
- }], navType: [{
209
- type: Input
210
- }], clearSelectionDate: [{
211
- type: Output
212
- }], calendarResponse: [{
213
- type: Output,
214
- args: ['response']
215
- }] } });
216
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF5cy1jYWxlbmRhci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ncmF2aXR5LWRlc2lnbi1zeXN0ZW0vc3JjL2xpYi9jb21wb25lbnRzL2dyYXZpdHktY2FsZW5kYXItbmV4dC9jb21wb25lbnRzL2RheXMtY2FsZW5kYXIvZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFnQixNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBQyxNQUFNLGlDQUFpQyxDQUFDO0FBQ3RHLE9BQU8sRUFBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLFdBQVcsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFVBQVUsR0FBRSxNQUFNLDZCQUE2QixDQUFDOzs7Ozs7O0FBT3hILE1BQU0sT0FBTyxxQkFBcUI7SUFMbEM7UUFNb0IsVUFBSyxHQUFZLEtBQUssQ0FBQztRQUN2QixZQUFPLEdBQVksS0FBSyxDQUFDO1FBQ3pCLGFBQVEsR0FBWSxLQUFLLENBQUM7UUFDMUIsYUFBUSxHQUFnQixJQUFJLENBQUM7UUFFN0IsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsWUFBTyxHQUE2QixNQUFNLENBQUE7UUFFekMsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFDeEQscUJBQWdCLEdBQWdD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O1lBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUFFO1FBRTVDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7K0dBM0xRLHFCQUFxQjttR0FBckIscUJBQXFCLHFWQ1ZsQyxxOUVBMkNBOzs0RkRqQ2EscUJBQXFCO2tCQUxqQyxTQUFTOytCQUNJLGVBQWU7OEJBS1QsS0FBSztzQkFBcEIsS0FBSztnQkFDVSxPQUFPO3NCQUF0QixLQUFLO2dCQUNVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxlQUFlO3NCQUE5QixLQUFLO2dCQUNVLGNBQWM7c0JBQTdCLEtBQUs7Z0JBQ1UsT0FBTztzQkFBdEIsS0FBSztnQkFFVyxrQkFBa0I7c0JBQWxDLE1BQU07Z0JBQ29CLGdCQUFnQjtzQkFBMUMsTUFBTTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDYWxlbmRhckRheX0gZnJvbSBcIi4uLy4uL3NoYXJlZC9jYWxlbmRhci5tb2RhbFwiO1xuaW1wb3J0IHtDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q0FMRU5EQVJfSTE4TiwgREFZU19FTiwgREFZU19FUywgTU9OVEhTX0VOLCBNT05USFNfRVN9IGZyb20gXCIuLi8uLi9zaGFyZWQvY2FsZW5kYXIuY29uc3RhbnRzXCI7XG5pbXBvcnQge3RvRGF0ZSwgZ2V0TW9udGhTdGFydCwgY2hhbmdlTW9udGgsIHRvQ2FsZW5kYXJEYXksIHRyYWNrQnlXZWVrLCB0cmFja0J5RGF5LH0gZnJvbSAnLi4vLi4vc2hhcmVkL2NhbGVuZGFyLnV0aWxzJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdkYXlzLWNhbGVuZGFyJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vZGF5cy1jYWxlbmRhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZGF5cy1jYWxlbmRhci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIERheXNDYWxlbmRhckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQElucHV0KCkgcHVibGljIHJhbmdlOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgcHVibGljIHJlc3RhcnQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKSBwdWJsaWMgbGFuZ3VhZ2U6ICdlcycgfCAnZW4nID0gJ2VuJztcbiAgICBASW5wdXQoKSBwdWJsaWMgcHJlU2VsZWN0ZWREYXRlOiBEYXRlIHwgRGF0ZVtdO1xuICAgIEBJbnB1dCgpIHB1YmxpYyBhY3Rpb25zU2VjdGlvbjogYm9vbGVhbiA9IHRydWU7XG4gICAgQElucHV0KCkgcHVibGljIG5hdlR5cGU6ICdwcmV2JyB8ICduZXh0JyB8ICdib3RoJyA9ICdib3RoJ1xuXG4gICAgQE91dHB1dCgpIHB1YmxpYyBjbGVhclNlbGVjdGlvbkRhdGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBAT3V0cHV0KCdyZXNwb25zZScpIHB1YmxpYyBjYWxlbmRhclJlc3BvbnNlOiBFdmVudEVtaXR0ZXI8RGF0ZVtdIHwgRGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGVbXSB8IERhdGU+KCk7XG5cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgdHJhY2tCeURheSA9IHRyYWNrQnlEYXk7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IHRyYWNrQnlXZWVrID0gdHJhY2tCeVdlZWs7XG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNoYW5nZU1vbnRoID0gY2hhbmdlTW9udGg7XG5cbiAgICBwdWJsaWMgY3VycmVudERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHB1YmxpYyBob3ZlcmVkRGF5OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuICAgIHB1YmxpYyBzZWxlY3RlZERheTogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRSYW5nZUVuZDogQ2FsZW5kYXJEYXkgfCBudWxsID0gbnVsbDtcbiAgICBwdWJsaWMgc2VsZWN0ZWRSYW5nZVN0YXJ0OiBDYWxlbmRhckRheSB8IG51bGwgPSBudWxsO1xuXG4gICAgcHVibGljIGdldCBpMThuKCkgeyByZXR1cm4gQ0FMRU5EQVJfSTE4Tlt0aGlzLmxhbmd1YWdlXTsgfVxuICAgIHB1YmxpYyBnZXQgZGF5c0xpc3QoKSB7IHJldHVybiB0aGlzLmxhbmd1YWdlID09PSAnZW4nID8gREFZU19FTiA6IERBWVNfRVM7IH1cbiAgICBwdWJsaWMgZ2V0IG1vbnRoc0xpc3QoKSB7IHJldHVybiB0aGlzLmxhbmd1YWdlID09PSAnZW4nID8gTU9OVEhTX0VOIDogTU9OVEhTX0VTOyB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHNob3VsZFJlc3RhcnQgPSBjaGFuZ2VzWydyZXN0YXJ0J10gJiYgdGhpcy5yZXN0YXJ0O1xuICAgICAgICBjb25zdCBzaG91bGRQcm9jZXNzUHJlU2VsZWN0ZWQgPSBjaGFuZ2VzWydwcmVTZWxlY3RlZERhdGUnXSAmJiB0aGlzLnByZVNlbGVjdGVkRGF0ZTtcbiAgICAgICAgaWYgKHNob3VsZFJlc3RhcnQgfHwgc2hvdWxkUHJvY2Vzc1ByZVNlbGVjdGVkKSB7IHRoaXMucHJvY2Vzc1ByZXNlbGVjdGVkRGF0ZSgpOyB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBwcm9jZXNzUHJlc2VsZWN0ZWREYXRlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5yYW5nZSAmJiBBcnJheS5pc0FycmF5KHRoaXMucHJlU2VsZWN0ZWREYXRlKSkge1xuICAgICAgICAgICAgY29uc3QgW3N0YXJ0LCBlbmRdID0gdGhpcy5wcmVTZWxlY3RlZERhdGU7XG5cbiAgICAgICAgICAgIGlmIChzdGFydCBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9IHRvQ2FsZW5kYXJEYXkoc3RhcnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRNb250aFN0YXJ0KHN0YXJ0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGVuZCBpbnN0YW5jZW9mIERhdGUpIHsgdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gdG9DYWxlbmRhckRheShlbmQpOyB9XG5cbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnByZVNlbGVjdGVkRGF0ZSBpbnN0YW5jZW9mIERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWREYXkgPSB0b0NhbGVuZGFyRGF5KHRoaXMucHJlU2VsZWN0ZWREYXRlKTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudERhdGUgPSBnZXRNb250aFN0YXJ0KHRoaXMucHJlU2VsZWN0ZWREYXRlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBpc0RhdGVTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlKSB7IHJldHVybiAhIXRoaXMuc2VsZWN0ZWREYXk7IH1cbiAgICAgICAgZWxzZSB7IHJldHVybiAhIXRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ICYmICEhdGhpcy5zZWxlY3RlZFJhbmdlRW5kOyB9XG4gICAgfVxuXG4gICAgcHVibGljIGlzUHJldmlldyhkYXk6IENhbGVuZGFyRGF5KTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgfHwgdGhpcy5zZWxlY3RlZFJhbmdlRW5kIHx8ICF0aGlzLmhvdmVyZWREYXkpIHsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICAgICAgY29uc3QgY3VycmVudCA9IHRvRGF0ZShkYXkpO1xuICAgICAgICBjb25zdCBob3ZlciA9IHRvRGF0ZSh0aGlzLmhvdmVyZWREYXkpO1xuICAgICAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG5cbiAgICAgICAgaWYgKGhvdmVyIDw9IHN0YXJ0KSB7IHJldHVybiBmYWxzZTsgfVxuICAgICAgICByZXR1cm4gY3VycmVudCA+IHN0YXJ0ICYmIGN1cnJlbnQgPD0gaG92ZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERheVNlbGVjdGlvbkNsYXNzKGRheTogQ2FsZW5kYXJEYXkpOiBzdHJpbmcge1xuICAgICAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuICdkaXNhYmxlZCc7XG4gICAgICAgIHJldHVybiB0aGlzLnJhbmdlID8gdGhpcy5nZXRSYW5nZVNlbGVjdGlvbkNsYXNzKGRheSkgOiB0aGlzLmdldFNpbmdsZURheVNlbGVjdGlvbkNsYXNzKGRheSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRTaW5nbGVEYXlTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXkgJiYgZGF5LmRheSA9PT0gdGhpcy5zZWxlY3RlZERheS5kYXkgJiZcbiAgICAgICAgICAgIGRheS5tb250aCA9PT0gdGhpcy5zZWxlY3RlZERheS5tb250aCAmJiBkYXkueWVhciA9PT0gdGhpcy5zZWxlY3RlZERheS55ZWFyKSB7XG4gICAgICAgICAgICByZXR1cm4gJ3NsIHNpbmdsZSc7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UmFuZ2VTZWxlY3Rpb25DbGFzcyhkYXk6IENhbGVuZGFyRGF5KTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCkgcmV0dXJuICduc2wtc3RhcnQnO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnQgPSB0b0RhdGUoZGF5KTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSB0b0RhdGUodGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQpO1xuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudC5nZXRUaW1lKCkgPT09IHN0YXJ0LmdldFRpbWUoKSkgcmV0dXJuICdzbCBzdGFydCc7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmhvdmVyZWREYXkpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBob3ZlciA9IHRvRGF0ZSh0aGlzLmhvdmVyZWREYXkpO1xuICAgICAgICAgICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gaG92ZXIuZ2V0VGltZSgpICYmIGhvdmVyIDwgc3RhcnQpIHJldHVybiAnbnNsLXN0YXJ0JztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuICduc2wtZW5kJztcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGVuZCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpO1xuXG4gICAgICAgIGlmIChjdXJyZW50LmdldFRpbWUoKSA9PT0gc3RhcnQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIHN0YXJ0JztcbiAgICAgICAgaWYgKGN1cnJlbnQuZ2V0VGltZSgpID09PSBlbmQuZ2V0VGltZSgpKSByZXR1cm4gJ3NsIGVuZCc7XG4gICAgICAgIGlmIChjdXJyZW50ID4gc3RhcnQgJiYgY3VycmVudCA8IGVuZCkgcmV0dXJuICdzbCByYW5nZSc7XG5cbiAgICAgICAgcmV0dXJuICduc2wtc3RhcnQnO1xuICAgIH1cblxuICAgIHB1YmxpYyBhcHBseVNlbGVjdGVkRGF0ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLnJhbmdlICYmIHRoaXMuc2VsZWN0ZWREYXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSB0b0RhdGUodGhpcy5zZWxlY3RlZERheSlcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGRhdGUpO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmFuZ2UgJiYgdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgJiYgdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICBjb25zdCBzdGFydCA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG4gICAgICAgICAgICBjb25zdCBlbmQgPXRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VFbmQpO1xuICAgICAgICAgICAgdGhpcy5jYWxlbmRhclJlc3BvbnNlLmVtaXQoW3N0YXJ0LCBlbmRdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhclNlbGVjdGVkRGF0ZSgpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZVN0YXJ0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5jbGVhclNlbGVjdGlvbkRhdGUuZW1pdCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkhvdmVyRGF5KGRheTogQ2FsZW5kYXJEYXkpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCkgeyByZXR1cm47IH1cbiAgICAgICAgdGhpcy5ob3ZlcmVkRGF5ID0gZGF5O1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhckhvdmVyKCk6IHZvaWQgeyB0aGlzLmhvdmVyZWREYXkgPSBudWxsOyB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3REYXkoZGF5OiBDYWxlbmRhckRheSk6IHZvaWQge1xuICAgICAgICBpZiAoIWRheS5pbkN1cnJlbnRNb250aCkgcmV0dXJuO1xuXG4gICAgICAgIGlmICghdGhpcy5yYW5nZSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZERheSA9IGRheTtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnREYXRlID0gdG9EYXRlKGRheSlcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJSZXNwb25zZS5lbWl0KGN1cnJlbnREYXRlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgfHwgdGhpcy5zZWxlY3RlZFJhbmdlRW5kKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCA9IGRheTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRSYW5nZUVuZCA9IG51bGw7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZERhdGUgPSB0b0RhdGUoZGF5KTtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IHRvRGF0ZSh0aGlzLnNlbGVjdGVkUmFuZ2VTdGFydCk7XG4gICAgICAgICAgICBzZWxlY3RlZERhdGUgPj0gc3RhcnREYXRlID8gdGhpcy5zZWxlY3RlZFJhbmdlRW5kID0gZGF5IDogdGhpcy5zZWxlY3RlZFJhbmdlU3RhcnQgPSBkYXk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9udGhHcmlkKCk6IENhbGVuZGFyRGF5W11bXSB7XG4gICAgICAgIGxldCB3ZWVrOiBDYWxlbmRhckRheVtdID0gW107XG5cbiAgICAgICAgY29uc3QgdG9kYXkgPSBuZXcgRGF0ZSgpO1xuICAgICAgICBjb25zdCBncmlkOiBDYWxlbmRhckRheVtdW10gPSBbXTtcbiAgICAgICAgY29uc3QgYmFzZURhdGUgPSB0aGlzLmN1cnJlbnREYXRlO1xuICAgICAgICBjb25zdCBtb250aCA9IGJhc2VEYXRlLmdldE1vbnRoKCk7XG4gICAgICAgIGNvbnN0IHllYXIgPSBiYXNlRGF0ZS5nZXRGdWxsWWVhcigpO1xuXG4gICAgICAgIGNvbnN0IGZpcnN0RGF5ID0gbmV3IERhdGUoeWVhciwgbW9udGgsIDEpO1xuICAgICAgICBjb25zdCBzdGFydFdlZWtkYXkgPSAoZmlyc3REYXkuZ2V0RGF5KCkgKyA2KSAlIDc7XG4gICAgICAgIGNvbnN0IGRheXNJbk1vbnRoID0gbmV3IERhdGUoeWVhciwgbW9udGggKyAxLCAwKS5nZXREYXRlKCk7XG4gICAgICAgIGNvbnN0IGRheXNJblByZXZNb250aCA9IG5ldyBEYXRlKHllYXIsIG1vbnRoLCAwKS5nZXREYXRlKCk7XG5cbiAgICAgICAgLy8gZmlsbCBkYXlzIGZyb20gcHJldmlvdXMgbW9udGhcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0V2Vla2RheSAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgICBjb25zdCBkYXkgPSBkYXlzSW5QcmV2TW9udGggLSBpO1xuICAgICAgICAgICAgd2Vlay5wdXNoKHsgZGF5LCBtb250aDogbW9udGggLSAxLCB5ZWFyLCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gZmlsbCBkYXlzIGZyb20gY3VycmVudCBtb250aFxuICAgICAgICBmb3IgKGxldCBkID0gMTsgZCA8PSBkYXlzSW5Nb250aDsgZCsrKSB7XG4gICAgICAgICAgICBjb25zdCBpc1RvZGF5ID0gZCA9PT0gdG9kYXkuZ2V0RGF0ZSgpICYmIG1vbnRoID09PSB0b2RheS5nZXRNb250aCgpICYmIHllYXIgPT09IHRvZGF5LmdldEZ1bGxZZWFyKCk7XG4gICAgICAgICAgICB3ZWVrLnB1c2goeyBkYXk6IGQsIG1vbnRoLCB5ZWFyLCBpc1RvZGF5LCBpbkN1cnJlbnRNb250aDogdHJ1ZSB9KTtcblxuICAgICAgICAgICAgaWYgKHdlZWsubGVuZ3RoID09PSA3KSB7IGdyaWQucHVzaCh3ZWVrKTsgd2VlayA9IFtdOyB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBmaWxsIHJlbWFpbmluZyBkYXlzIGZyb20gbmV4dCBtb250aFxuICAgICAgICBsZXQgbmV4dERheSA9IDE7XG4gICAgICAgIHdoaWxlICh3ZWVrLmxlbmd0aCA8IDcpIHtcbiAgICAgICAgICAgIHdlZWsucHVzaCh7IGRheTogbmV4dERheSsrLCBtb250aDogbW9udGggKyAxLCB5ZWFyLCBpc1RvZGF5OiBmYWxzZSwgaW5DdXJyZW50TW9udGg6IGZhbHNlIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaGFzQ3VycmVudE1vbnRoRGF5ID0gd2Vlay5zb21lKGRheSA9PiBkYXkuaW5DdXJyZW50TW9udGgpO1xuICAgICAgICBpZiAoaGFzQ3VycmVudE1vbnRoRGF5KSB7IGdyaWQucHVzaCh3ZWVrKTsgfVxuXG4gICAgICAgIHJldHVybiBncmlkO1xuICAgIH1cblxufSIsIjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1oZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwicHJldmlvdXMtYnV0dG9uXCI+XG4gICAgICAgIDxncmF2aXR5LWljb24gKm5nSWY9XCIhKG5hdlR5cGUgPT09ICduZXh0JylcIiBbc3R5bGUuLS1pY29uLWNvbG9yXT1cIid2YXIoLS10ZXh0LWhpZ2hsaWdodC1wcmltYXJ5KSdcIiBbaWNvbk5hbWVdPVwiJ2Fycm93LWxlZnQnXCJcbiAgICAgICAgICAgICAgICAgICAgICBbaWNvblNpemVdPVwiJ3NtLTEyJ1wiIChjbGljayk9XCJjdXJyZW50RGF0ZSA9IGNoYW5nZU1vbnRoKC0xLCBjdXJyZW50RGF0ZSlcIiA+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibW9udGgteWVhci1sYWJlbFwiPlxuICAgICAgICA8Z3Jhdml0eS1kcm9wZG93bi1sYWJlbCBbZm9udENsYXNzXT1cIidoci10aXRsZSBzbS1ib2xkJ1wiIFtzaXplXT1cIidzbSdcIiBbbGFiZWxdPVwibW9udGhzTGlzdFtjdXJyZW50RGF0ZS5nZXRNb250aCgpXVwiPjwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICAgICAgPGdyYXZpdHktZHJvcGRvd24tbGFiZWwgW2ZvbnRDbGFzc109XCInaHItdGl0bGUgc20tYm9sZCdcIiBbc2l6ZV09XCInc20nXCIgW2xhYmVsXT1cImN1cnJlbnREYXRlLmdldEZ1bGxZZWFyKCkudG9TdHJpbmcoKVwiPjwvZ3Jhdml0eS1kcm9wZG93bi1sYWJlbD5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXYgY2xhc3M9XCJuZXh0LWJ1dHRvblwiPlxuICAgICAgICA8Z3Jhdml0eS1pY29uICpuZ0lmPVwiIShuYXZUeXBlID09PSAncHJldicpXCIgW3N0eWxlLi0taWNvbi1jb2xvcl09XCIndmFyKC0tdGV4dC1oaWdobGlnaHQtcHJpbWFyeSknXCIgW2ljb25OYW1lXT1cIidhcnJvdy1yaWdodCdcIlxuICAgICAgICAgICAgICAgICAgICAgIFtpY29uU2l6ZV09XCInc20tMTInXCIgKGNsaWNrKT1cImN1cnJlbnREYXRlID0gY2hhbmdlTW9udGgoMSwgY3VycmVudERhdGUpXCI+PC9ncmF2aXR5LWljb24+XG4gICAgPC9kaXY+XG48L3NlY3Rpb24+XG5cbjxzZWN0aW9uIGNsYXNzPVwiZ3Jhdml0eS1jYWxlbmRhci1ib2R5XCI+XG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW5hbWUtbGluZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1uYW1lXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHkgc20tcmVndWxhclwiICpuZ0Zvcj1cImxldCBkYXkgb2YgZGF5c0xpc3RcIj57e2RheX19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNlcGFyYXRvci1saW5lXCI+PC9kaXY+XG4gICAgPC9zZWN0aW9uPlxuXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJkYXlzLW51bWJlci1zZWxlY3RvclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZGF5cy1udW1iZXItdGFibGVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLXJvd1wiICpuZ0Zvcj1cImxldCB3ZWVrIG9mIGdldE1vbnRoR3JpZCgpOyB0cmFja0J5OiB0cmFja0J5V2Vla1wiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImhyLWJvZHkgc20tcmVndWxhclwiICpuZ0Zvcj1cImxldCBkIG9mIHdlZWs7IHRyYWNrQnk6IHRyYWNrQnlEYXlcIlxuICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiBnZXREYXlTZWxlY3Rpb25DbGFzcyhkKVwiXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5kaXNhYmxlZF09XCIhZC5pbkN1cnJlbnRNb250aFwiIFtjbGFzcy50b2RheV09XCJkLmlzVG9kYXlcIiBbY2xhc3MucHJldmlld109XCJyYW5nZSA/IGlzUHJldmlldyhkKSA6IG51bGxcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWxlY3REYXkoZClcIiAobW91c2VlbnRlcik9XCJyYW5nZSA/IG9uSG92ZXJEYXkoZCkgOiBudWxsXCIgKG1vdXNlbGVhdmUpPVwicmFuZ2UgPyBjbGVhckhvdmVyKCkgOiBudWxsXCI+XG4gICAgICAgICAgICAgICAge3sgZC5kYXkgfX1cbiAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJhY3Rpb24tc2VjdGlvblwiPlxuICAgICAgICAgICAgPGdyYXZpdHktbGluayAqbmdJZj1cImFjdGlvbnNTZWN0aW9uXCIgW2xpbmtUZXh0XT1cImkxOG4uY2xlYXJcIiBbc3RhdGVdPVwiIWlzRGF0ZVNlbGVjdGVkKCkgPyAnZGlzYWJsZWQnIDogJ2FjdGl2ZSdcIiAoY2xpY2spPVwiY2xlYXJTZWxlY3RlZERhdGUoKVwiPjwvZ3Jhdml0eS1saW5rPlxuICAgICAgICAgICAgPGdyYXZpdHktYnV0dG9uICpuZ0lmPVwiYWN0aW9uc1NlY3Rpb25cIiBbc2l6ZV09XCInc20nXCIgW3R5cGVdPVwiJ3RlcnRpYXJ5J1wiIFtkaXNhYmxlZF09XCIhaXNEYXRlU2VsZWN0ZWQoKVwiIChjbGljayk9XCJhcHBseVNlbGVjdGVkRGF0ZSgpXCI+e3tpMThuLmFwcGx5fX08L2dyYXZpdHktYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L3NlY3Rpb24+XG48L3NlY3Rpb24+XG4iXX0=