@acorex/components 18.16.0-next.3 → 18.16.0-next.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (75) hide show
  1. package/cron-job/lib/cron-job-container/cron-job-container.component.d.ts +11 -13
  2. package/cron-job/lib/cron-job.service.d.ts +3 -3
  3. package/cron-job/lib/day/day.component.d.ts +3 -1
  4. package/cron-job/lib/day/day.service.d.ts +2 -2
  5. package/cron-job/lib/hours/hours.component.d.ts +3 -1
  6. package/cron-job/lib/hours/hours.service.d.ts +2 -2
  7. package/cron-job/lib/minutes/minutes.component.d.ts +3 -1
  8. package/cron-job/lib/minutes/minutes.service.d.ts +2 -2
  9. package/cron-job/lib/month/month.component.d.ts +3 -1
  10. package/cron-job/lib/month/month.service.d.ts +2 -2
  11. package/cron-job/lib/seconds/seconds.component.d.ts +3 -1
  12. package/cron-job/lib/seconds/seconds.service.d.ts +2 -2
  13. package/cron-job/lib/year/year.component.d.ts +3 -1
  14. package/cron-job/lib/year/year.service.d.ts +2 -2
  15. package/data-pager/lib/data-pager-info.component.d.ts +4 -4
  16. package/data-pager/lib/data-pager.component.d.ts +3 -1
  17. package/drawer/lib/drawer/drawer-item/drawer.component.d.ts +1 -0
  18. package/esm2022/badge/lib/badge.component.mjs +2 -2
  19. package/esm2022/button/lib/button-item-list.component.mjs +2 -2
  20. package/esm2022/cron-job/lib/cron-job-container/cron-job-container.component.mjs +62 -45
  21. package/esm2022/cron-job/lib/cron-job.service.mjs +5 -5
  22. package/esm2022/cron-job/lib/day/day.component.mjs +8 -4
  23. package/esm2022/cron-job/lib/day/day.service.mjs +4 -4
  24. package/esm2022/cron-job/lib/hours/hours.component.mjs +8 -4
  25. package/esm2022/cron-job/lib/hours/hours.service.mjs +4 -4
  26. package/esm2022/cron-job/lib/minutes/minutes.component.mjs +8 -4
  27. package/esm2022/cron-job/lib/minutes/minutes.service.mjs +4 -4
  28. package/esm2022/cron-job/lib/month/month.component.mjs +8 -4
  29. package/esm2022/cron-job/lib/month/month.service.mjs +4 -4
  30. package/esm2022/cron-job/lib/seconds/seconds.component.mjs +8 -4
  31. package/esm2022/cron-job/lib/seconds/seconds.service.mjs +4 -4
  32. package/esm2022/cron-job/lib/year/year.component.mjs +8 -4
  33. package/esm2022/cron-job/lib/year/year.service.mjs +4 -4
  34. package/esm2022/data-pager/lib/data-pager-info.component.mjs +8 -7
  35. package/esm2022/data-pager/lib/data-pager-next-buttons.components.mjs +39 -8
  36. package/esm2022/data-pager/lib/data-pager-numeric-selector.component.mjs +21 -13
  37. package/esm2022/data-pager/lib/data-pager-pagesize-dropdown.component.mjs +3 -15
  38. package/esm2022/data-pager/lib/data-pager-prev-buttons.component.mjs +37 -7
  39. package/esm2022/data-pager/lib/data-pager.component.mjs +13 -6
  40. package/esm2022/data-table/lib/data-table/data-table.component.mjs +1 -1
  41. package/esm2022/drawer/lib/drawer/drawer-item/drawer.component.mjs +13 -6
  42. package/esm2022/list/lib/list.component.mjs +2 -2
  43. package/esm2022/menu/lib/context-menu.component.mjs +2 -1
  44. package/esm2022/menu/lib/menu-item.component.mjs +4 -6
  45. package/esm2022/tabs/lib/tabs.component.mjs +18 -13
  46. package/esm2022/tree-view/lib/tree-view.component.mjs +4 -3
  47. package/esm2022/uploader/lib/uploader-dialog-container/uploader-dialog-container.component.mjs +3 -3
  48. package/esm2022/uploader/lib/uploader-drop-zone/uploader-drop-zone.component.mjs +3 -3
  49. package/esm2022/wysiwyg/lib/wysiwyg/wysiwyg-container/wysiwyg-container.component.mjs +2 -2
  50. package/fesm2022/acorex-components-badge.mjs +2 -2
  51. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  52. package/fesm2022/acorex-components-button.mjs +2 -2
  53. package/fesm2022/acorex-components-button.mjs.map +1 -1
  54. package/fesm2022/acorex-components-cron-job.mjs +109 -68
  55. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  56. package/fesm2022/acorex-components-data-pager.mjs +118 -54
  57. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  58. package/fesm2022/acorex-components-data-table.mjs +1 -1
  59. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  60. package/fesm2022/acorex-components-drawer.mjs +12 -5
  61. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  62. package/fesm2022/acorex-components-list.mjs +2 -2
  63. package/fesm2022/acorex-components-list.mjs.map +1 -1
  64. package/fesm2022/acorex-components-menu.mjs +4 -5
  65. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  66. package/fesm2022/acorex-components-tabs.mjs +17 -12
  67. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  68. package/fesm2022/acorex-components-tree-view.mjs +3 -2
  69. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  70. package/fesm2022/acorex-components-uploader.mjs +4 -4
  71. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  72. package/fesm2022/acorex-components-wysiwyg.mjs +2 -2
  73. package/menu/lib/context-menu.component.d.ts +1 -0
  74. package/package.json +1 -1
  75. package/tabs/lib/tabs.component.d.ts +1 -0
@@ -1,4 +1,4 @@
1
- import { AXClickEvent } from '@acorex/components/common';
1
+ import { MXInputBaseValueComponent } from '@acorex/components/common';
2
2
  import { AXTabLocation, AXTabLook, AXTabsComponent } from '@acorex/components/tabs';
3
3
  import { DayService } from '../day/day.service';
4
4
  import { HoursService } from '../hours/hours.service';
@@ -7,25 +7,23 @@ import { MonthService } from '../month/month.service';
7
7
  import { SecondsService } from '../seconds/seconds.service';
8
8
  import { YearService } from '../year/year.service';
9
9
  import * as i0 from "@angular/core";
10
- export declare class AXCronJobContainerComponent {
10
+ export declare class AXCronJobContainerComponent extends MXInputBaseValueComponent<string> {
11
11
  #private;
12
+ protected secondsService: SecondsService;
13
+ protected minutesService: MinutesService;
14
+ protected hoursService: HoursService;
15
+ protected monthService: MonthService;
16
+ protected dayService: DayService;
17
+ protected yearService: YearService;
12
18
  protected tabComponent: import("@angular/core").Signal<AXTabsComponent>;
13
19
  protected activeTab: import("@angular/core").WritableSignal<string>;
14
- protected expResult: string;
15
- onExpressionChange: import("@angular/core").OutputEmitterRef<AXClickEvent>;
16
20
  protected options: import("@angular/core").WritableSignal<{
17
21
  fit: boolean;
18
22
  look: AXTabLook;
19
23
  location: AXTabLocation;
20
24
  }>;
21
- protected secondsService: SecondsService;
22
- protected minutesService: MinutesService;
23
- protected hoursService: HoursService;
24
- protected monthService: MonthService;
25
- protected dayService: DayService;
26
- protected yearService: YearService;
27
- protected onGetModel(): void;
28
- protected reverseExpression(cronExpressionPattern: string): void;
25
+ onGetModel(): void;
26
+ protected internalValueChanged(cronExpressionPattern: string): void;
29
27
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronJobContainerComponent, never>;
30
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronJobContainerComponent, "ax-cron-job-container", never, {}, { "onExpressionChange": "onExpressionChange"; }, never, never, false, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronJobContainerComponent, "ax-cron-job-container", never, {}, { "onValueChanged": "onValueChanged"; }, never, never, false, never>;
31
29
  }
@@ -1,6 +1,6 @@
1
1
  import { DropDownItem, RegexItemsIndex } from './types/shared.model';
2
2
  import * as i0 from "@angular/core";
3
- export declare class StringService {
3
+ export declare class CronJobService {
4
4
  addComma(str: string): string;
5
5
  getRegexItem(cronExpressionPattern: string, itemIndex: RegexItemsIndex): string;
6
6
  getIntervalCronData(regex: string): {
@@ -17,6 +17,6 @@ export declare class StringService {
17
17
  xst: number;
18
18
  } | undefined;
19
19
  mapItemsToDropDownItem(items: Array<string>, dropDowndata?: Array<string>): Array<DropDownItem>;
20
- static ɵfac: i0.ɵɵFactoryDeclaration<StringService, never>;
21
- static ɵprov: i0.ɵɵInjectableDeclaration<StringService>;
20
+ static ɵfac: i0.ɵɵFactoryDeclaration<CronJobService, never>;
21
+ static ɵprov: i0.ɵɵInjectableDeclaration<CronJobService>;
22
22
  }
@@ -9,6 +9,8 @@ export declare class AXCronDayComponent {
9
9
  protected boMonthDropDownList: DropDownItem[];
10
10
  protected daysIndexInMonth: number[];
11
11
  protected zeroTo30: number[];
12
+ dayChanged: import("@angular/core").OutputEmitterRef<void>;
13
+ protected inputChange(): void;
12
14
  protected changeHandler(e: AXValueChangedEvent): void;
13
15
  protected changeHandler2(e: AXValueChangedEvent): void;
14
16
  protected get daysList(): Array<string>;
@@ -18,5 +20,5 @@ export declare class AXCronDayComponent {
18
20
  protected get isBoMonthCustom(): boolean;
19
21
  protected get isBoMonthBefore(): boolean;
20
22
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronDayComponent, never>;
21
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronDayComponent, "ax-cron-day", never, {}, {}, never, never, false, never>;
23
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronDayComponent, "ax-cron-day", never, {}, { "dayChanged": "dayChanged"; }, never, never, false, never>;
22
24
  }
@@ -1,4 +1,4 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { IExpression } from '../types/iexpression';
3
3
  import { Day } from './day.model';
4
4
  import * as i0 from "@angular/core";
@@ -6,7 +6,7 @@ export declare class DayService implements IExpression {
6
6
  private stringService;
7
7
  dayModel: Day;
8
8
  daysList: Array<string>;
9
- constructor(stringService: StringService);
9
+ constructor(stringService: CronJobService);
10
10
  getExpression(): any;
11
11
  expressionValidation(preCronExpressionPattern: string, newCronExpressionPattern: string): string;
12
12
  reversExpression(cronExpressionPattern: string): void;
@@ -7,8 +7,10 @@ export declare class AXCronHoursComponent {
7
7
  hoursService: HoursService;
8
8
  protected dropdownList: DropDownItem[];
9
9
  protected zeroTo23: number[];
10
+ hoursChanged: import("@angular/core").OutputEmitterRef<void>;
11
+ protected inputChange(): void;
10
12
  protected changeHandler(e: AXValueChangedEvent): void;
11
13
  protected get isCustom(): boolean;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronHoursComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronHoursComponent, "ax-cron-hours", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronHoursComponent, "ax-cron-hours", never, {}, { "hoursChanged": "hoursChanged"; }, never, never, false, never>;
14
16
  }
@@ -1,11 +1,11 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { IExpression } from '../types/iexpression';
3
3
  import { Hours } from './hours.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class HoursService implements IExpression {
6
6
  private stringService;
7
7
  hourModel: Hours;
8
- constructor(stringService: StringService);
8
+ constructor(stringService: CronJobService);
9
9
  getExpression(): string;
10
10
  reversExpression(cronExpressionPattern: string): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<HoursService, never>;
@@ -7,8 +7,10 @@ export declare class AXCronMinutesComponent {
7
7
  protected minutesService: MinutesService;
8
8
  protected dropdownList: DropDownItem[];
9
9
  protected zeroTo59: number[];
10
+ minutesChanged: import("@angular/core").OutputEmitterRef<void>;
11
+ protected inputChange(): void;
10
12
  protected changeHandler(e: AXValueChangedEvent): void;
11
13
  protected get isCustom(): boolean;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronMinutesComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMinutesComponent, "ax-cron-minutes", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMinutesComponent, "ax-cron-minutes", never, {}, { "minutesChanged": "minutesChanged"; }, never, never, false, never>;
14
16
  }
@@ -1,11 +1,11 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { IExpression } from '../types/iexpression';
3
3
  import { Minutes } from './minutes.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class MinutesService implements IExpression {
6
6
  private stringService;
7
7
  minuteModel: Minutes;
8
- constructor(stringService: StringService);
8
+ constructor(stringService: CronJobService);
9
9
  getExpression(): string;
10
10
  reversExpression(cronExpressionPattern: string): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<MinutesService, never>;
@@ -8,9 +8,11 @@ export declare class AXCronMonthComponent {
8
8
  protected dropdownList: DropDownItem[];
9
9
  protected dropdownList2: DropDownItem[];
10
10
  protected oneTo12: DropDownItem[];
11
+ monthChanged: import("@angular/core").OutputEmitterRef<void>;
12
+ protected inputChange(): void;
11
13
  protected changeHandler(e: AXValueChangedEvent): void;
12
14
  protected get isCustom(): boolean;
13
15
  protected get monthsList(): Array<string>;
14
16
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronMonthComponent, never>;
15
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMonthComponent, "ax-cron-month", never, {}, {}, never, never, false, never>;
17
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronMonthComponent, "ax-cron-month", never, {}, { "monthChanged": "monthChanged"; }, never, never, false, never>;
16
18
  }
@@ -1,4 +1,4 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { IExpression } from '../types/iexpression';
3
3
  import { Month } from './month.model';
4
4
  import * as i0 from "@angular/core";
@@ -6,7 +6,7 @@ export declare class MonthService implements IExpression {
6
6
  private stringService;
7
7
  monthModel: Month;
8
8
  monthList: Array<string>;
9
- constructor(stringService: StringService);
9
+ constructor(stringService: CronJobService);
10
10
  getExpression(): string;
11
11
  reversExpression(cronExpressionPattern: string): void;
12
12
  static ɵfac: i0.ɵɵFactoryDeclaration<MonthService, never>;
@@ -5,10 +5,12 @@ import * as i0 from "@angular/core";
5
5
  export declare class AXCronSecondsComponent {
6
6
  #private;
7
7
  protected secondsService: SecondsService;
8
+ secondsChanged: import("@angular/core").OutputEmitterRef<void>;
8
9
  protected dropdownList: DropDownItem[];
9
10
  protected zeroTo59: number[];
11
+ protected inputChange(): void;
10
12
  protected changeHandler(e: AXValueChangedEvent): void;
11
13
  protected get isCustom(): boolean;
12
14
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronSecondsComponent, never>;
13
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronSecondsComponent, "ax-cron-seconds", never, {}, {}, never, never, false, never>;
15
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronSecondsComponent, "ax-cron-seconds", never, {}, { "secondsChanged": "secondsChanged"; }, never, never, false, never>;
14
16
  }
@@ -1,11 +1,11 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { IExpression } from '../types/iexpression';
3
3
  import { Seconds } from './seconds.model';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class SecondsService implements IExpression {
6
6
  private stringService;
7
7
  secondModel: Seconds;
8
- constructor(stringService: StringService);
8
+ constructor(stringService: CronJobService);
9
9
  getExpression(): string;
10
10
  reversExpression(cronExpressionPattern: string): void;
11
11
  static ɵfac: i0.ɵɵFactoryDeclaration<SecondsService, never>;
@@ -7,9 +7,11 @@ export declare class AXCronYearComponent {
7
7
  yearService: YearService;
8
8
  protected dropdownList: DropDownItem[];
9
9
  protected oneTo100: DropDownItem[];
10
+ yearChanged: import("@angular/core").OutputEmitterRef<void>;
11
+ protected inputChange(): void;
10
12
  protected changeHandler(e: AXValueChangedEvent): void;
11
13
  protected get isCustom(): boolean;
12
14
  protected getYearByOffset(offset: number): number;
13
15
  static ɵfac: i0.ɵɵFactoryDeclaration<AXCronYearComponent, never>;
14
- static ɵcmp: i0.ɵɵComponentDeclaration<AXCronYearComponent, "ax-cron-year", never, {}, {}, never, never, false, never>;
16
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXCronYearComponent, "ax-cron-year", never, {}, { "yearChanged": "yearChanged"; }, never, never, false, never>;
15
17
  }
@@ -1,10 +1,10 @@
1
- import { StringService } from '../cron-job.service';
1
+ import { CronJobService } from '../cron-job.service';
2
2
  import { Year } from './year.model';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class YearService {
5
5
  private stringService;
6
6
  yearModel: Year;
7
- constructor(stringService: StringService);
7
+ constructor(stringService: CronJobService);
8
8
  getExpression(): string;
9
9
  reversExpression(cronExpressionPattern: string): void;
10
10
  static ɵfac: i0.ɵɵFactoryDeclaration<YearService, never>;
@@ -12,13 +12,13 @@ export declare class AXDataPagerInfoComponent extends AXDataPagerChild {
12
12
  */
13
13
  text: string;
14
14
  /**
15
- * @ignore
16
- */
15
+ * @ignore
16
+ */
17
17
  protected _textFormatted: string;
18
18
  protected translateService: AXTranslationService;
19
19
  /**
20
- * @ignore
21
- */
20
+ * @ignore
21
+ */
22
22
  protected applyParent(): void;
23
23
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataPagerInfoComponent, never>;
24
24
  static ɵcmp: i0.ɵɵComponentDeclaration<AXDataPagerInfoComponent, "ax-data-pager-info", never, { "text": { "alias": "text"; "required": false; }; }, {}, never, never, false, never>;
@@ -10,6 +10,7 @@ export type AXDataPagerMode = 'full' | 'compact' | 'custom';
10
10
  */
11
11
  export declare class AXDataPagerComponent extends MXValueComponent<number> {
12
12
  private _parent;
13
+ classes: import("@angular/core").InputSignal<string>;
13
14
  /**
14
15
  * @ignore
15
16
  */
@@ -145,6 +146,7 @@ export declare class AXDataPagerComponent extends MXValueComponent<number> {
145
146
  * @ignore
146
147
  */
147
148
  goToPage(page: number): void;
149
+ get __hostClass(): string;
148
150
  static ɵfac: i0.ɵɵFactoryDeclaration<AXDataPagerComponent, [{ optional: true; }]>;
149
- static ɵcmp: i0.ɵɵComponentDeclaration<AXDataPagerComponent, "ax-data-pager", never, { "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "isLoading": { "alias": "isLoading"; "required": false; }; "size": { "alias": "size"; "required": false; }; "total": { "alias": "total"; "required": false; }; "displayMode": { "alias": "displayMode"; "required": false; }; }, { "valueChange": "valueChange"; "onValueChanged": "onValueChanged"; "disabledChange": "disabledChange"; "readonlyChange": "readonlyChange"; "displayModeChange": "displayModeChange"; "onChanged": "onChanged"; }, never, ["ax-prefix", "ax-suffix"], false, never>;
151
+ static ɵcmp: i0.ɵɵComponentDeclaration<AXDataPagerComponent, "ax-data-pager", never, { "value": { "alias": "value"; "required": false; }; "name": { "alias": "name"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "classes": { "alias": "class"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; }; "size": { "alias": "size"; "required": false; }; "total": { "alias": "total"; "required": false; }; "displayMode": { "alias": "displayMode"; "required": false; }; }, { "valueChange": "valueChange"; "onValueChanged": "onValueChanged"; "disabledChange": "disabledChange"; "readonlyChange": "readonlyChange"; "displayModeChange": "displayModeChange"; "onChanged": "onChanged"; }, never, ["ax-prefix", "ax-suffix"], false, never>;
150
152
  }
@@ -9,6 +9,7 @@ export type AXDrawerLocation = 'start' | 'end';
9
9
  * @category Components
10
10
  */
11
11
  export declare class AXDrawerComponent extends MXBaseComponent implements AfterContentInit, DoCheck {
12
+ #private;
12
13
  location: import("@angular/core").ModelSignal<AXDrawerLocation>;
13
14
  showBackdrop: import("@angular/core").InputSignal<boolean>;
14
15
  mode: import("@angular/core").ModelSignal<AXDrawerMode>;
@@ -18,11 +18,11 @@ export class AXBadgeComponent extends MXColorLookComponent {
18
18
  return `ax-el-${this.color}-${this.look} ${!this.text() ? 'ax-mini-badge' : ''} ${this.text()?.length == 1 ? 'ax-single-badge' : ''}`;
19
19
  }
20
20
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXBadgeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
21
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXBadgeComponent, selector: "ax-badge", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\"></ng-content>\n@if (text) {\n <span class=\"ax-badge-text\">{{ text() }}</span>\n}\n<ng-content select=\"ax-suffix\"></ng-content>\n", styles: ["ax-badge{display:inline-block;border-radius:9999px;border-width:1px;border-color:transparent;font-size:.75rem}ax-badge.ax-mini-badge{height:.5rem;width:.5rem}ax-badge.ax-mini-badge .ax-badge-text{display:none}ax-badge.ax-single-badge{display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center}ax-badge.ax-single-badge .ax-badge-text{padding:0}ax-badge .ax-badge-text{white-space:nowrap;word-break:break-all;padding:.25rem .375rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
21
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXBadgeComponent, selector: "ax-badge", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: false, isRequired: false, transformFunction: null }, look: { classPropertyName: "look", publicName: "look", isSignal: false, isRequired: false, transformFunction: null }, text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "this.__hostClass" } }, usesInheritance: true, ngImport: i0, template: "<ng-content select=\"ax-prefix\"></ng-content>\n@if (text) {\n <span class=\"ax-badge-text\">{{ text() }}</span>\n}\n<ng-content select=\"ax-suffix\"></ng-content>\n", styles: ["ax-badge{display:inline-block;border-radius:9999px;border-width:1px;border-color:transparent;font-size:.75rem;max-height:fit-content}ax-badge.ax-mini-badge{height:.5rem;width:.5rem}ax-badge.ax-mini-badge .ax-badge-text{display:none}ax-badge.ax-single-badge{display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center}ax-badge.ax-single-badge .ax-badge-text{padding:0}ax-badge .ax-badge-text{white-space:nowrap;word-break:break-all;padding:.25rem .375rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
22
22
  }
23
23
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXBadgeComponent, decorators: [{
24
24
  type: Component,
25
- args: [{ selector: 'ax-badge', inputs: ['color', 'look'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ax-prefix\"></ng-content>\n@if (text) {\n <span class=\"ax-badge-text\">{{ text() }}</span>\n}\n<ng-content select=\"ax-suffix\"></ng-content>\n", styles: ["ax-badge{display:inline-block;border-radius:9999px;border-width:1px;border-color:transparent;font-size:.75rem}ax-badge.ax-mini-badge{height:.5rem;width:.5rem}ax-badge.ax-mini-badge .ax-badge-text{display:none}ax-badge.ax-single-badge{display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center}ax-badge.ax-single-badge .ax-badge-text{padding:0}ax-badge .ax-badge-text{white-space:nowrap;word-break:break-all;padding:.25rem .375rem}\n"] }]
25
+ args: [{ selector: 'ax-badge', inputs: ['color', 'look'], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"ax-prefix\"></ng-content>\n@if (text) {\n <span class=\"ax-badge-text\">{{ text() }}</span>\n}\n<ng-content select=\"ax-suffix\"></ng-content>\n", styles: ["ax-badge{display:inline-block;border-radius:9999px;border-width:1px;border-color:transparent;font-size:.75rem;max-height:fit-content}ax-badge.ax-mini-badge{height:.5rem;width:.5rem}ax-badge.ax-mini-badge .ax-badge-text{display:none}ax-badge.ax-single-badge{display:flex;height:1.25rem;width:1.25rem;align-items:center;justify-content:center}ax-badge.ax-single-badge .ax-badge-text{padding:0}ax-badge .ax-badge-text{white-space:nowrap;word-break:break-all;padding:.25rem .375rem}\n"] }]
26
26
  }], propDecorators: { __hostClass: [{
27
27
  type: HostBinding,
28
28
  args: ['class']
@@ -111,7 +111,7 @@ export class AXButtonItemListComponent extends MXInteractiveComponent {
111
111
  }
112
112
  }
113
113
  <ng-content select="ax-button-item, ax-title, ax-divider, ng-container"></ng-content>
114
- `, isInline: true, styles: ["ax-button-item-list.ax-action-list .ax-action-item{border-radius:var(--ax-rounded-border-default);margin-bottom:.25rem}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
114
+ `, isInline: true, styles: ["ax-button-item-list.ax-action-list{padding:.25rem 0}ax-button-item-list.ax-action-list .ax-action-item:not(ax-button-item-list.ax-action-list .ax-action-item:last-child){margin-bottom:.25rem}\n"], dependencies: [{ kind: "component", type: i1.AXDecoratorIconComponent, selector: "ax-icon", inputs: ["icon"] }, { kind: "component", type: i1.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i2.AXButtonItemComponent, selector: "ax-button-item", inputs: ["color", "disabled", "text", "selected", "divided", "data", "name"], outputs: ["onClick", "onFocus", "onBlur", "disabledChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
115
115
  }
116
116
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXButtonItemListComponent, decorators: [{
117
117
  type: Component,
@@ -135,7 +135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImpor
135
135
  }
136
136
  }
137
137
  <ng-content select="ax-button-item, ax-title, ax-divider, ng-container"></ng-content>
138
- `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["ax-button-item-list.ax-action-list .ax-action-item{border-radius:var(--ax-rounded-border-default);margin-bottom:.25rem}\n"] }]
138
+ `, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: ["ax-button-item-list.ax-action-list{padding:.25rem 0}ax-button-item-list.ax-action-list .ax-action-item:not(ax-button-item-list.ax-action-list .ax-action-item:last-child){margin-bottom:.25rem}\n"] }]
139
139
  }], ctorParameters: () => [{ type: i3.AXClosbaleComponent, decorators: [{
140
140
  type: Optional
141
141
  }, {
@@ -1,6 +1,8 @@
1
+ import { AXClearableComponent, AXComponent, AXFocusableComponent, AXValuableComponent, MXInputBaseValueComponent, } from '@acorex/components/common';
1
2
  import { AXTabsComponent } from '@acorex/components/tabs';
2
- import { afterNextRender, Component, inject, output, signal, viewChild, ViewEncapsulation, } from '@angular/core';
3
- import { StringService } from '../cron-job.service';
3
+ import { afterNextRender, Component, forwardRef, inject, signal, viewChild, ViewEncapsulation, } from '@angular/core';
4
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
+ import { CronJobService } from '../cron-job.service';
4
6
  import { DayService } from '../day/day.service';
5
7
  import { HoursService } from '../hours/hours.service';
6
8
  import { MinutesService } from '../minutes/minutes.service';
@@ -10,39 +12,35 @@ import { YearService } from '../year/year.service';
10
12
  import * as i0 from "@angular/core";
11
13
  import * as i1 from "@acorex/components/tabs";
12
14
  import * as i2 from "@acorex/components/decorators";
13
- import * as i3 from "@angular/forms";
14
- import * as i4 from "@acorex/components/text-box";
15
- import * as i5 from "@acorex/components/button";
16
- import * as i6 from "../day/day.component";
17
- import * as i7 from "../hours/hours.component";
18
- import * as i8 from "../minutes/minutes.component";
19
- import * as i9 from "../month/month.component";
20
- import * as i10 from "../seconds/seconds.component";
21
- import * as i11 from "../year/year.component";
22
- import * as i12 from "@angular/common";
23
- import * as i13 from "@acorex/core/translation";
24
- export class AXCronJobContainerComponent {
15
+ import * as i3 from "../day/day.component";
16
+ import * as i4 from "../hours/hours.component";
17
+ import * as i5 from "../minutes/minutes.component";
18
+ import * as i6 from "../month/month.component";
19
+ import * as i7 from "../seconds/seconds.component";
20
+ import * as i8 from "../year/year.component";
21
+ import * as i9 from "@angular/common";
22
+ import * as i10 from "@acorex/core/translation";
23
+ export class AXCronJobContainerComponent extends MXInputBaseValueComponent {
25
24
  constructor() {
25
+ super(...arguments);
26
+ this.secondsService = inject(SecondsService);
27
+ this.minutesService = inject(MinutesService);
28
+ this.hoursService = inject(HoursService);
29
+ this.monthService = inject(MonthService);
30
+ this.dayService = inject(DayService);
31
+ this.yearService = inject(YearService);
26
32
  this.tabComponent = viewChild(AXTabsComponent);
27
33
  this.activeTab = signal('Seconds');
28
- this.expResult = '* * * ? * * *';
29
- this.onExpressionChange = output();
30
- this.#init = afterNextRender(() => {
31
- this.tabComponent().onActiveTabChanged.subscribe((e) => {
32
- this.activeTab.set(e.tab.key);
33
- });
34
- });
35
34
  this.options = signal({
36
35
  fit: true,
37
36
  look: 'with-line',
38
37
  location: 'bottom',
39
38
  });
40
- this.secondsService = inject(SecondsService);
41
- this.minutesService = inject(MinutesService);
42
- this.hoursService = inject(HoursService);
43
- this.monthService = inject(MonthService);
44
- this.dayService = inject(DayService);
45
- this.yearService = inject(YearService);
39
+ this.#init = afterNextRender(() => {
40
+ this.tabComponent().onActiveTabChanged.subscribe((e) => {
41
+ this.activeTab.set(e.tab.key);
42
+ });
43
+ });
46
44
  }
47
45
  #init;
48
46
  onGetModel() {
@@ -52,39 +50,58 @@ export class AXCronJobContainerComponent {
52
50
  const monthExp = this.monthService.getExpression();
53
51
  const dayExp = this.dayService.getExpression();
54
52
  const yearExp = this.yearService.getExpression();
55
- this.expResult = `${secondsExp} ${minutesExp} ${hoursExp} ${dayExp[1]} ${monthExp} ${dayExp[0]} ${yearExp}`;
56
- this.onExpressionChange.emit({ data: this.expResult, component: this });
53
+ const expResult = `${secondsExp} ${minutesExp} ${hoursExp} ${dayExp[1]} ${monthExp} ${dayExp[0]} ${yearExp}`;
54
+ this.commitValue(expResult, true);
57
55
  }
58
- reverseExpression(cronExpressionPattern) {
59
- this.expResult = this.dayService.expressionValidation(this.expResult, cronExpressionPattern);
60
- this.secondsService.reversExpression(cronExpressionPattern);
61
- this.minutesService.reversExpression(cronExpressionPattern);
62
- this.hoursService.reversExpression(cronExpressionPattern);
63
- this.dayService.reversExpression(cronExpressionPattern);
64
- this.monthService.reversExpression(cronExpressionPattern);
65
- this.yearService.reversExpression(cronExpressionPattern);
56
+ internalValueChanged(cronExpressionPattern) {
57
+ setTimeout(() => {
58
+ this.secondsService.reversExpression(cronExpressionPattern);
59
+ this.minutesService.reversExpression(cronExpressionPattern);
60
+ this.hoursService.reversExpression(cronExpressionPattern);
61
+ this.dayService.reversExpression(cronExpressionPattern);
62
+ this.monthService.reversExpression(cronExpressionPattern);
63
+ this.yearService.reversExpression(cronExpressionPattern);
64
+ });
66
65
  }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCronJobContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: { onExpressionChange: "onExpressionChange" }, providers: [
66
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCronJobContainerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "18.2.0", type: AXCronJobContainerComponent, selector: "ax-cron-job-container", outputs: { onValueChanged: "onValueChanged" }, providers: [
69
68
  SecondsService,
70
69
  MinutesService,
71
70
  HoursService,
72
71
  DayService,
73
72
  MonthService,
74
73
  YearService,
75
- StringService,
76
- ], viewQueries: [{ propertyName: "tabComponent", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ax-tabs [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'time.Seconds' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'time.Minutes' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'time.Hours' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'time.Days' | translate | async\"></ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'time.Months' | translate | async\"></ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'time.Years' | translate | async\"></ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n @switch (activeTab()) {\n @case ('Seconds') {\n <ax-cron-seconds></ax-cron-seconds>\n }\n @case ('Minutes') {\n <ax-cron-minutes></ax-cron-minutes>\n }\n @case ('Hours') {\n <ax-cron-hours></ax-cron-hours>\n }\n @case ('Days') {\n <ax-cron-day></ax-cron-day>\n }\n @case ('Months') {\n <ax-cron-month></ax-cron-month>\n }\n @case ('Years') {\n <ax-cron-year></ax-cron-year>\n }\n }\n</div>\n\n<div class=\"ax-btn-result-container\">\n <ax-button\n color=\"primary\"\n [text]=\"'generate-expression' | translate | async\"\n class=\"btn btn-success\"\n (click)=\"onGetModel()\"\n ></ax-button>\n\n <div>\n <ax-text-box [ngModel]=\"expResult\" (ngModelChange)=\"reverseExpression($event)\">\n <ax-clear-button></ax-clear-button>\n </ax-text-box>\n </div>\n</div>\n", styles: ["ax-cron-job-container{display:block;border:1px solid rgb(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);overflow:hidden}.ax-btn-result-container{padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center}.ax-btn-result-container ax-button{margin-inline-end:1rem}.ax-cron-tools-container{padding:1rem;border-bottom:1px solid rgb(var(--ax-color-border-default));overflow-x:auto}\n"], dependencies: [{ kind: "component", type: i1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "component", type: i2.AXDecoratorClearButtonComponent, selector: "ax-clear-button", inputs: ["icon"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i4.AXTextBoxComponent, selector: "ax-text-box", inputs: ["disabled", "tabIndex", "readonly", "value", "state", "name", "id", "placeholder", "maxLength", "allowNull", "type", "autoComplete", "look", "mask-options", "class"], outputs: ["onBlur", "onFocus", "valueChange", "stateChange", "onValueChanged", "readonlyChange", "disabledChange", "onKeyDown", "onKeyUp", "onKeyPress"] }, { kind: "component", type: i5.AXButtonComponent, selector: "ax-button", inputs: ["disabled", "size", "tabIndex", "color", "look", "text", "toggleable", "selected", "type", "responsiveOn", "loadingText"], outputs: ["onBlur", "onFocus", "onClick", "selectedChange", "toggleableChange", "lookChange", "colorChange", "disabledChange", "responsiveOnChange", "loadingTextChange"] }, { kind: "component", type: i6.AXCronDayComponent, selector: "ax-cron-day" }, { kind: "component", type: i7.AXCronHoursComponent, selector: "ax-cron-hours" }, { kind: "component", type: i8.AXCronMinutesComponent, selector: "ax-cron-minutes" }, { kind: "component", type: i9.AXCronMonthComponent, selector: "ax-cron-month" }, { kind: "component", type: i10.AXCronSecondsComponent, selector: "ax-cron-seconds" }, { kind: "component", type: i11.AXCronYearComponent, selector: "ax-cron-year" }, { kind: "pipe", type: i12.AsyncPipe, name: "async" }, { kind: "pipe", type: i13.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
74
+ CronJobService,
75
+ { provide: AXComponent, useExisting: AXCronJobContainerComponent },
76
+ { provide: AXFocusableComponent, useExisting: AXCronJobContainerComponent },
77
+ { provide: AXClearableComponent, useExisting: AXCronJobContainerComponent },
78
+ { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },
79
+ {
80
+ provide: NG_VALUE_ACCESSOR,
81
+ useExisting: forwardRef(() => AXCronJobContainerComponent),
82
+ multi: true,
83
+ },
84
+ ], viewQueries: [{ propertyName: "tabComponent", first: true, predicate: AXTabsComponent, descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<ax-tabs\n [content]=\"cronTab\"\n [look]=\"options().look\"\n [fitParent]=\"options().fit\"\n [location]=\"options().location\"\n>\n <ax-tab-item key=\"Seconds\" [text]=\"'time.Seconds' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'time.Minutes' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'time.Hours' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'time.Days' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'time.Months' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'time.Years' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n", styles: ["ax-cron-job-container{display:block;border:1px solid rgb(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default)}.ax-btn-result-container{padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center}.ax-btn-result-container ax-button{margin-inline-end:1rem}.ax-cron-tools-container{padding:1rem;border-bottom:1px solid rgb(var(--ax-color-border-default));overflow-x:auto}\n"], dependencies: [{ kind: "component", type: i1.AXTabsComponent, selector: "ax-tabs", inputs: ["look", "location", "fitParent", "minWidth", "content"], outputs: ["onActiveTabChanged"] }, { kind: "component", type: i1.AXTabItemComponent, selector: "ax-tab-item", inputs: ["disabled", "text", "key", "headerTemplate", "active"], outputs: ["disabledChange", "onClick", "onBlur", "onFocus", "activeChange"] }, { kind: "directive", type: i1.AXTabContentDirective, selector: "[axTabContent]", inputs: ["axTabContent"], exportAs: ["axTabContent"] }, { kind: "component", type: i2.AXDecoratorGenericComponent, selector: "ax-footer, ax-header, ax-content, ax-divider, ax-form-hint, ax-prefix, ax-suffix, ax-text, ax-title, ax-sub-title, ax-placeholder, ax-overlay" }, { kind: "component", type: i3.AXCronDayComponent, selector: "ax-cron-day", outputs: ["dayChanged"] }, { kind: "component", type: i4.AXCronHoursComponent, selector: "ax-cron-hours", outputs: ["hoursChanged"] }, { kind: "component", type: i5.AXCronMinutesComponent, selector: "ax-cron-minutes", outputs: ["minutesChanged"] }, { kind: "component", type: i6.AXCronMonthComponent, selector: "ax-cron-month", outputs: ["monthChanged"] }, { kind: "component", type: i7.AXCronSecondsComponent, selector: "ax-cron-seconds", outputs: ["secondsChanged"] }, { kind: "component", type: i8.AXCronYearComponent, selector: "ax-cron-year", outputs: ["yearChanged"] }, { kind: "pipe", type: i9.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.AXTranslatorPipe, name: "translate" }], encapsulation: i0.ViewEncapsulation.None }); }
77
85
  }
78
86
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: AXCronJobContainerComponent, decorators: [{
79
87
  type: Component,
80
- args: [{ selector: 'ax-cron-job-container', providers: [
88
+ args: [{ selector: 'ax-cron-job-container', outputs: ['onValueChanged'], providers: [
81
89
  SecondsService,
82
90
  MinutesService,
83
91
  HoursService,
84
92
  DayService,
85
93
  MonthService,
86
94
  YearService,
87
- StringService,
88
- ], encapsulation: ViewEncapsulation.None, template: "<ax-tabs [look]=\"options().look\" [fitParent]=\"options().fit\" [location]=\"options().location\">\n <ax-tab-item key=\"Seconds\" [text]=\"'time.Seconds' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'time.Minutes' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'time.Hours' | translate | async\"> </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'time.Days' | translate | async\"></ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'time.Months' | translate | async\"></ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'time.Years' | translate | async\"></ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n @switch (activeTab()) {\n @case ('Seconds') {\n <ax-cron-seconds></ax-cron-seconds>\n }\n @case ('Minutes') {\n <ax-cron-minutes></ax-cron-minutes>\n }\n @case ('Hours') {\n <ax-cron-hours></ax-cron-hours>\n }\n @case ('Days') {\n <ax-cron-day></ax-cron-day>\n }\n @case ('Months') {\n <ax-cron-month></ax-cron-month>\n }\n @case ('Years') {\n <ax-cron-year></ax-cron-year>\n }\n }\n</div>\n\n<div class=\"ax-btn-result-container\">\n <ax-button\n color=\"primary\"\n [text]=\"'generate-expression' | translate | async\"\n class=\"btn btn-success\"\n (click)=\"onGetModel()\"\n ></ax-button>\n\n <div>\n <ax-text-box [ngModel]=\"expResult\" (ngModelChange)=\"reverseExpression($event)\">\n <ax-clear-button></ax-clear-button>\n </ax-text-box>\n </div>\n</div>\n", styles: ["ax-cron-job-container{display:block;border:1px solid rgb(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default);overflow:hidden}.ax-btn-result-container{padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center}.ax-btn-result-container ax-button{margin-inline-end:1rem}.ax-cron-tools-container{padding:1rem;border-bottom:1px solid rgb(var(--ax-color-border-default));overflow-x:auto}\n"] }]
95
+ CronJobService,
96
+ { provide: AXComponent, useExisting: AXCronJobContainerComponent },
97
+ { provide: AXFocusableComponent, useExisting: AXCronJobContainerComponent },
98
+ { provide: AXClearableComponent, useExisting: AXCronJobContainerComponent },
99
+ { provide: AXValuableComponent, useExisting: AXCronJobContainerComponent },
100
+ {
101
+ provide: NG_VALUE_ACCESSOR,
102
+ useExisting: forwardRef(() => AXCronJobContainerComponent),
103
+ multi: true,
104
+ },
105
+ ], encapsulation: ViewEncapsulation.None, template: "<ax-tabs\n [content]=\"cronTab\"\n [look]=\"options().look\"\n [fitParent]=\"options().fit\"\n [location]=\"options().location\"\n>\n <ax-tab-item key=\"Seconds\" [text]=\"'time.Seconds' | translate | async\">\n <ax-content> <ax-cron-seconds (secondsChanged)=\"onGetModel()\"></ax-cron-seconds></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Minutes\" [text]=\"'time.Minutes' | translate | async\">\n <ax-content> <ax-cron-minutes (minutesChanged)=\"onGetModel()\"></ax-cron-minutes></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Hours\" [text]=\"'time.Hours' | translate | async\">\n <ax-content> <ax-cron-hours (hoursChanged)=\"onGetModel()\"></ax-cron-hours></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Days\" [text]=\"'time.Days' | translate | async\">\n <ax-content> <ax-cron-day (dayChanged)=\"onGetModel()\"></ax-cron-day></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Months\" [text]=\"'time.Months' | translate | async\">\n <ax-content> <ax-cron-month (monthChanged)=\"onGetModel()\"></ax-cron-month></ax-content>\n </ax-tab-item>\n <ax-tab-item key=\"Years\" [text]=\"'time.Years' | translate | async\">\n <ax-content><ax-cron-year (yearChanged)=\"onGetModel()\"></ax-cron-year></ax-content>\n </ax-tab-item>\n</ax-tabs>\n\n<div class=\"ax-cron-tools-container\">\n <ng-template [axTabContent] #cronTab=\"axTabContent\"> </ng-template>\n</div>\n", styles: ["ax-cron-job-container{display:block;border:1px solid rgb(var(--ax-color-border-default));border-radius:var(--ax-rounded-border-default)}.ax-btn-result-container{padding:.5rem 1rem;display:flex;justify-content:space-between;align-items:center}.ax-btn-result-container ax-button{margin-inline-end:1rem}.ax-cron-tools-container{padding:1rem;border-bottom:1px solid rgb(var(--ax-color-border-default));overflow-x:auto}\n"] }]
89
106
  }] });
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1qb2ItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jcm9uLWpvYi9zcmMvbGliL2Nyb24tam9iLWNvbnRhaW5lci9jcm9uLWpvYi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Nyb24tam9iL3NyYy9saWIvY3Jvbi1qb2ItY29udGFpbmVyL2Nyb24tam9iLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQTRCLGVBQWUsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3BGLE9BQU8sRUFDTCxlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFpQm5ELE1BQU0sT0FBTywyQkFBMkI7SUFmeEM7UUFnQlksaUJBQVksR0FBRyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDMUMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5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WixXQUFXO1lBQ1gsYUFBYTtTQUNkLHdFQUlrQyxlQUFlLGdFQ3BDcEQsd2hEQThDQTs7MkZEWGEsMkJBQTJCO2tCQWZ2QyxTQUFTOytCQUNFLHVCQUF1QixhQUd0Qjt3QkFDVCxjQUFjO3dCQUNkLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixVQUFVO3dCQUNWLFlBQVk7d0JBQ1osV0FBVzt3QkFDWCxhQUFhO3FCQUNkLGlCQUNjLGlCQUFpQixDQUFDLElBQUkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBWENsaWNrRXZlbnQgfSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYVGFiTG9jYXRpb24sIEFYVGFiTG9vaywgQVhUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDb21wb25lbnQsXG4gIGluamVjdCxcbiAgb3V0cHV0LFxuICBzaWduYWwsXG4gIHZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBTdHJpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vY3Jvbi1qb2Iuc2VydmljZSc7XG5pbXBvcnQgeyBEYXlTZXJ2aWNlIH0gZnJvbSAnLi4vZGF5L2RheS5zZXJ2aWNlJztcbmltcG9ydCB7IEhvdXJzU2VydmljZSB9IGZyb20gJy4uL2hvdXJzL2hvdXJzLnNlcnZpY2UnO1xuaW1wb3J0IHsgTWludXRlc1NlcnZpY2UgfSBmcm9tICcuLi9taW51dGVzL21pbnV0ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBNb250aFNlcnZpY2UgfSBmcm9tICcuLi9tb250aC9tb250aC5zZXJ2aWNlJztcbmltcG9ydCB7IFNlY29uZHNTZXJ2aWNlIH0gZnJvbSAnLi4vc2Vjb25kcy9zZWNvbmRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgWWVhclNlcnZpY2UgfSBmcm9tICcuLi95ZWFyL3llYXIuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2F4LWNyb24tam9iLWNvbnRhaW5lcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9jcm9uLWpvYi1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vY3Jvbi1qb2ItY29udGFpbmVyLmNvbXBvbmVudC5zY3NzJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2Vjb25kc1NlcnZpY2UsXG4gICAgTWludXRlc1NlcnZpY2UsXG4gICAgSG91cnNTZXJ2aWNlLFxuICAgIERheVNlcnZpY2UsXG4gICAgTW9udGhTZXJ2aWNlLFxuICAgIFllYXJTZXJ2aWNlLFxuICAgIFN0cmluZ1NlcnZpY2UsXG4gIF0sXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIEFYQ3JvbkpvYkNvbnRhaW5lckNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCB0YWJDb21wb25lbnQgPSB2aWV3Q2hpbGQoQVhUYWJzQ29tcG9uZW50KTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVRhYiA9IHNpZ25hbCgnU2Vjb25kcycpO1xuICBwcm90ZWN0ZWQgZXhwUmVzdWx0ID0gJyogKiAqID8gKiAqIConO1xuXG4gIG9uRXhwcmVzc2lvbkNoYW5nZSA9IG91dHB1dDxBWENsaWNrRXZlbnQ+KCk7XG5cbiAgI2luaXQgPSBhZnRlck5leHRSZW5kZXIoKCkgPT4ge1xuICAgIHRoaXMudGFiQ29tcG9uZW50KCkub25BY3RpdmVUYWJDaGFuZ2VkLnN1YnNjcmliZSgoZSkgPT4ge1xuICAgICAgdGhpcy5hY3RpdmVUYWIuc2V0KGUudGFiLmtleSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIHByb3RlY3RlZCBvcHRpb25zID0gc2lnbmFsKHtcbiAgICBmaXQ6IHRydWUsXG4gICAgbG9vazogJ3dpdGgtbGluZScgYXMgQVhUYWJMb29rLFxuICAgIGxvY2F0aW9uOiAnYm90dG9tJyBhcyBBWFRhYkxvY2F0aW9uLFxuICB9KTtcblxuICBwcm90ZWN0ZWQgc2Vjb25kc1NlcnZpY2UgPSBpbmplY3QoU2Vjb25kc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgbWludXRlc1NlcnZpY2UgPSBpbmplY3QoTWludXRlc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaG91cnNTZXJ2aWNlID0gaW5qZWN0KEhvdXJzU2VydmljZSk7XG4gIHByb3RlY3RlZCBtb250aFNlcnZpY2UgPSBpbmplY3QoTW9udGhTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRheVNlcnZpY2UgPSBpbmplY3QoRGF5U2VydmljZSk7XG4gIHByb3RlY3RlZCB5ZWFyU2VydmljZSA9IGluamVjdChZZWFyU2VydmljZSk7XG5cbiAgcHJvdGVjdGVkIG9uR2V0TW9kZWwoKSB7XG4gICAgY29uc3Qgc2Vjb25kc0V4cCA9IHRoaXMuc2Vjb25kc1NlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IG1pbnV0ZXNFeHAgPSB0aGlzLm1pbnV0ZXNTZXJ2aWNlLmdldEV4cHJlc3Npb24oKTtcbiAgICBjb25zdCBob3Vyc0V4cCA9IHRoaXMuaG91cnNTZXJ2aWNlLmdldEV4cHJlc3Npb24oKTtcbiAgICBjb25zdCBtb250aEV4cCA9IHRoaXMubW9udGhTZXJ2aWNlLmdldEV4cHJlc3Npb24oKTtcbiAgICBjb25zdCBkYXlFeHAgPSB0aGlzLmRheVNlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IHllYXJFeHAgPSB0aGlzLnllYXJTZXJ2aWNlLmdldEV4cHJlc3Npb24oKTtcbiAgICB0aGlzLmV4cFJlc3VsdCA9IGAke3NlY29uZHNFeHB9ICR7bWludXRlc0V4cH0gJHtob3Vyc0V4cH0gJHtkYXlFeHBbMV19ICR7bW9udGhFeHB9ICR7ZGF5RXhwWzBdfSAke3llYXJFeHB9YDtcbiAgICB0aGlzLm9uRXhwcmVzc2lvbkNoYW5nZS5lbWl0KHsgZGF0YTogdGhpcy5leHBSZXN1bHQsIGNvbXBvbmVudDogdGhpcyB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCByZXZlcnNlRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm46IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZXhwUmVzdWx0ID0gdGhpcy5kYXlTZXJ2aWNlLmV4cHJlc3Npb25WYWxpZGF0aW9uKHRoaXMuZXhwUmVzdWx0LCBjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgIHRoaXMuc2Vjb25kc1NlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgIHRoaXMubWludXRlc1NlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgIHRoaXMuaG91cnNTZXJ2aWNlLnJldmVyc0V4cHJlc3Npb24oY3JvbkV4cHJlc3Npb25QYXR0ZXJuKTtcbiAgICB0aGlzLmRheVNlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgIHRoaXMubW9udGhTZXJ2aWNlLnJldmVyc0V4cHJlc3Npb24oY3JvbkV4cHJlc3Npb25QYXR0ZXJuKTtcbiAgICB0aGlzLnllYXJTZXJ2aWNlLnJldmVyc0V4cHJlc3Npb24oY3JvbkV4cHJlc3Npb25QYXR0ZXJuKTtcbiAgfVxufVxuIiwiPGF4LXRhYnMgW2xvb2tdPVwib3B0aW9ucygpLmxvb2tcIiBbZml0UGFyZW50XT1cIm9wdGlvbnMoKS5maXRcIiBbbG9jYXRpb25dPVwib3B0aW9ucygpLmxvY2F0aW9uXCI+XG4gIDxheC10YWItaXRlbSBrZXk9XCJTZWNvbmRzXCIgW3RleHRdPVwiJ3RpbWUuU2Vjb25kcycgfCB0cmFuc2xhdGUgfCBhc3luY1wiPiA8L2F4LXRhYi1pdGVtPlxuICA8YXgtdGFiLWl0ZW0ga2V5PVwiTWludXRlc1wiIFt0ZXh0XT1cIid0aW1lLk1pbnV0ZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj4gPC9heC10YWItaXRlbT5cbiAgPGF4LXRhYi1pdGVtIGtleT1cIkhvdXJzXCIgW3RleHRdPVwiJ3RpbWUuSG91cnMnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj4gPC9heC10YWItaXRlbT5cbiAgPGF4LXRhYi1pdGVtIGtleT1cIkRheXNcIiBbdGV4dF09XCIndGltZS5EYXlzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCI+PC9heC10YWItaXRlbT5cbiAgPGF4LXRhYi1pdGVtIGtleT1cIk1vbnRoc1wiIFt0ZXh0XT1cIid0aW1lLk1vbnRocycgfCB0cmFuc2xhdGUgfCBhc3luY1wiPjwvYXgtdGFiLWl0ZW0+XG4gIDxheC10YWItaXRlbSBrZXk9XCJZZWFyc1wiIFt0ZXh0XT1cIid0aW1lLlllYXJzJyB8IHRyYW5zbGF0ZSB8IGFzeW5jXCI+PC9heC10YWItaXRlbT5cbjwvYXgtdGFicz5cblxuPGRpdiBjbGFzcz1cImF4LWNyb24tdG9vbHMtY29udGFpbmVyXCI+XG4gIEBzd2l0Y2ggKGFjdGl2ZVRhYigpKSB7XG4gICAgQGNhc2UgKCdTZWNvbmRzJykge1xuICAgICAgPGF4LWNyb24tc2Vjb25kcz48L2F4LWNyb24tc2Vjb25kcz5cbiAgICB9XG4gICAgQGNhc2UgKCdNaW51dGVzJykge1xuICAgICAgPGF4LWNyb24tbWludXRlcz48L2F4LWNyb24tbWludXRlcz5cbiAgICB9XG4gICAgQGNhc2UgKCdIb3VycycpIHtcbiAgICAgIDxheC1jcm9uLWhvdXJzPjwvYXgtY3Jvbi1ob3Vycz5cbiAgICB9XG4gICAgQGNhc2UgKCdEYXlzJykge1xuICAgICAgPGF4LWNyb24tZGF5PjwvYXgtY3Jvbi1kYXk+XG4gICAgfVxuICAgIEBjYXNlICgnTW9udGhzJykge1xuICAgICAgPGF4LWNyb24tbW9udGg+PC9heC1jcm9uLW1vbnRoPlxuICAgIH1cbiAgICBAY2FzZSAoJ1llYXJzJykge1xuICAgICAgPGF4LWNyb24teWVhcj48L2F4LWNyb24teWVhcj5cbiAgICB9XG4gIH1cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiYXgtYnRuLXJlc3VsdC1jb250YWluZXJcIj5cbiAgPGF4LWJ1dHRvblxuICAgIGNvbG9yPVwicHJpbWFyeVwiXG4gICAgW3RleHRdPVwiJ2dlbmVyYXRlLWV4cHJlc3Npb24nIHwgdHJhbnNsYXRlIHwgYXN5bmNcIlxuICAgIGNsYXNzPVwiYnRuIGJ0bi1zdWNjZXNzXCJcbiAgICAoY2xpY2spPVwib25HZXRNb2RlbCgpXCJcbiAgPjwvYXgtYnV0dG9uPlxuXG4gIDxkaXY+XG4gICAgPGF4LXRleHQtYm94IFtuZ01vZGVsXT1cImV4cFJlc3VsdFwiIChuZ01vZGVsQ2hhbmdlKT1cInJldmVyc2VFeHByZXNzaW9uKCRldmVudClcIj5cbiAgICAgIDxheC1jbGVhci1idXR0b24+PC9heC1jbGVhci1idXR0b24+XG4gICAgPC9heC10ZXh0LWJveD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
107
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3Jvbi1qb2ItY29udGFpbmVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9jcm9uLWpvYi9zcmMvbGliL2Nyb24tam9iLWNvbnRhaW5lci9jcm9uLWpvYi1jb250YWluZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2Nyb24tam9iL3NyYy9saWIvY3Jvbi1qb2ItY29udGFpbmVyL2Nyb24tam9iLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLFdBQVcsRUFDWCxvQkFBb0IsRUFDcEIsbUJBQW1CLEVBQ25CLHlCQUF5QixHQUMxQixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBNEIsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDcEYsT0FBTyxFQUNMLGVBQWUsRUFDZixTQUFTLEVBQ1QsVUFBVSxFQUNWLE1BQU0sRUFDTixNQUFNLEVBQ04sU0FBUyxFQUNULGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNuRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDckQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDNUQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sc0JB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biAgQVhDb21wb25lbnQsXG4gIEFYRm9jdXNhYmxlQ29tcG9uZW50LFxuICBBWFZhbHVhYmxlQ29tcG9uZW50LFxuICBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50LFxufSBmcm9tICdAYWNvcmV4L2NvbXBvbmVudHMvY29tbW9uJztcbmltcG9ydCB7IEFYVGFiTG9jYXRpb24sIEFYVGFiTG9vaywgQVhUYWJzQ29tcG9uZW50IH0gZnJvbSAnQGFjb3JleC9jb21wb25lbnRzL3RhYnMnO1xuaW1wb3J0IHtcbiAgYWZ0ZXJOZXh0UmVuZGVyLFxuICBDb21wb25lbnQsXG4gIGZvcndhcmRSZWYsXG4gIGluamVjdCxcbiAgc2lnbmFsLFxuICB2aWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ3JvbkpvYlNlcnZpY2UgfSBmcm9tICcuLi9jcm9uLWpvYi5zZXJ2aWNlJztcbmltcG9ydCB7IERheVNlcnZpY2UgfSBmcm9tICcuLi9kYXkvZGF5LnNlcnZpY2UnO1xuaW1wb3J0IHsgSG91cnNTZXJ2aWNlIH0gZnJvbSAnLi4vaG91cnMvaG91cnMuc2VydmljZSc7XG5pbXBvcnQgeyBNaW51dGVzU2VydmljZSB9IGZyb20gJy4uL21pbnV0ZXMvbWludXRlcy5zZXJ2aWNlJztcbmltcG9ydCB7IE1vbnRoU2VydmljZSB9IGZyb20gJy4uL21vbnRoL21vbnRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2Vjb25kc1NlcnZpY2UgfSBmcm9tICcuLi9zZWNvbmRzL3NlY29uZHMuc2VydmljZSc7XG5pbXBvcnQgeyBZZWFyU2VydmljZSB9IGZyb20gJy4uL3llYXIveWVhci5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXgtY3Jvbi1qb2ItY29udGFpbmVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Nyb24tam9iLWNvbnRhaW5lci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9jcm9uLWpvYi1jb250YWluZXIuY29tcG9uZW50LnNjc3MnLFxuICBvdXRwdXRzOiBbJ29uVmFsdWVDaGFuZ2VkJ10sXG4gIHByb3ZpZGVyczogW1xuICAgIFNlY29uZHNTZXJ2aWNlLFxuICAgIE1pbnV0ZXNTZXJ2aWNlLFxuICAgIEhvdXJzU2VydmljZSxcbiAgICBEYXlTZXJ2aWNlLFxuICAgIE1vbnRoU2VydmljZSxcbiAgICBZZWFyU2VydmljZSxcbiAgICBDcm9uSm9iU2VydmljZSxcbiAgICB7IHByb3ZpZGU6IEFYQ29tcG9uZW50LCB1c2VFeGlzdGluZzogQVhDcm9uSm9iQ29udGFpbmVyQ29tcG9uZW50IH0sXG4gICAgeyBwcm92aWRlOiBBWEZvY3VzYWJsZUNvbXBvbmVudCwgdXNlRXhpc3Rpbmc6IEFYQ3JvbkpvYkNvbnRhaW5lckNvbXBvbmVudCB9LFxuICAgIHsgcHJvdmlkZTogQVhDbGVhcmFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENyb25Kb2JDb250YWluZXJDb21wb25lbnQgfSxcbiAgICB7IHByb3ZpZGU6IEFYVmFsdWFibGVDb21wb25lbnQsIHVzZUV4aXN0aW5nOiBBWENyb25Kb2JDb250YWluZXJDb21wb25lbnQgfSxcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEFYQ3JvbkpvYkNvbnRhaW5lckNvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxufSlcbmV4cG9ydCBjbGFzcyBBWENyb25Kb2JDb250YWluZXJDb21wb25lbnQgZXh0ZW5kcyBNWElucHV0QmFzZVZhbHVlQ29tcG9uZW50PHN0cmluZz4ge1xuICBwcm90ZWN0ZWQgc2Vjb25kc1NlcnZpY2UgPSBpbmplY3QoU2Vjb25kc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgbWludXRlc1NlcnZpY2UgPSBpbmplY3QoTWludXRlc1NlcnZpY2UpO1xuICBwcm90ZWN0ZWQgaG91cnNTZXJ2aWNlID0gaW5qZWN0KEhvdXJzU2VydmljZSk7XG4gIHByb3RlY3RlZCBtb250aFNlcnZpY2UgPSBpbmplY3QoTW9udGhTZXJ2aWNlKTtcbiAgcHJvdGVjdGVkIGRheVNlcnZpY2UgPSBpbmplY3QoRGF5U2VydmljZSk7XG4gIHByb3RlY3RlZCB5ZWFyU2VydmljZSA9IGluamVjdChZZWFyU2VydmljZSk7XG4gIHByb3RlY3RlZCB0YWJDb21wb25lbnQgPSB2aWV3Q2hpbGQoQVhUYWJzQ29tcG9uZW50KTtcbiAgcHJvdGVjdGVkIGFjdGl2ZVRhYiA9IHNpZ25hbCgnU2Vjb25kcycpO1xuXG4gIHByb3RlY3RlZCBvcHRpb25zID0gc2lnbmFsKHtcbiAgICBmaXQ6IHRydWUsXG4gICAgbG9vazogJ3dpdGgtbGluZScgYXMgQVhUYWJMb29rLFxuICAgIGxvY2F0aW9uOiAnYm90dG9tJyBhcyBBWFRhYkxvY2F0aW9uLFxuICB9KTtcblxuICAjaW5pdCA9IGFmdGVyTmV4dFJlbmRlcigoKSA9PiB7XG4gICAgdGhpcy50YWJDb21wb25lbnQoKS5vbkFjdGl2ZVRhYkNoYW5nZWQuc3Vic2NyaWJlKChlKSA9PiB7XG4gICAgICB0aGlzLmFjdGl2ZVRhYi5zZXQoZS50YWIua2V5KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgb25HZXRNb2RlbCgpIHtcbiAgICBjb25zdCBzZWNvbmRzRXhwID0gdGhpcy5zZWNvbmRzU2VydmljZS5nZXRFeHByZXNzaW9uKCk7XG4gICAgY29uc3QgbWludXRlc0V4cCA9IHRoaXMubWludXRlc1NlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IGhvdXJzRXhwID0gdGhpcy5ob3Vyc1NlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IG1vbnRoRXhwID0gdGhpcy5tb250aFNlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IGRheUV4cCA9IHRoaXMuZGF5U2VydmljZS5nZXRFeHByZXNzaW9uKCk7XG4gICAgY29uc3QgeWVhckV4cCA9IHRoaXMueWVhclNlcnZpY2UuZ2V0RXhwcmVzc2lvbigpO1xuICAgIGNvbnN0IGV4cFJlc3VsdCA9IGAke3NlY29uZHNFeHB9ICR7bWludXRlc0V4cH0gJHtob3Vyc0V4cH0gJHtkYXlFeHBbMV19ICR7bW9udGhFeHB9ICR7ZGF5RXhwWzBdfSAke3llYXJFeHB9YDtcbiAgICB0aGlzLmNvbW1pdFZhbHVlKGV4cFJlc3VsdCwgdHJ1ZSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgaW50ZXJuYWxWYWx1ZUNoYW5nZWQoY3JvbkV4cHJlc3Npb25QYXR0ZXJuOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuc2Vjb25kc1NlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgICAgdGhpcy5taW51dGVzU2VydmljZS5yZXZlcnNFeHByZXNzaW9uKGNyb25FeHByZXNzaW9uUGF0dGVybik7XG4gICAgICB0aGlzLmhvdXJzU2VydmljZS5yZXZlcnNFeHByZXNzaW9uKGNyb25FeHByZXNzaW9uUGF0dGVybik7XG4gICAgICB0aGlzLmRheVNlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgICAgdGhpcy5tb250aFNlcnZpY2UucmV2ZXJzRXhwcmVzc2lvbihjcm9uRXhwcmVzc2lvblBhdHRlcm4pO1xuICAgICAgdGhpcy55ZWFyU2VydmljZS5yZXZlcnNFeHByZXNzaW9uKGNyb25FeHByZXNzaW9uUGF0dGVybik7XG4gICAgfSk7XG4gIH1cbn1cbiIsIjxheC10YWJzXG4gIFtjb250ZW50XT1cImNyb25UYWJcIlxuICBbbG9va109XCJvcHRpb25zKCkubG9va1wiXG4gIFtmaXRQYXJlbnRdPVwib3B0aW9ucygpLmZpdFwiXG4gIFtsb2NhdGlvbl09XCJvcHRpb25zKCkubG9jYXRpb25cIlxuPlxuICA8YXgtdGFiLWl0ZW0ga2V5PVwiU2Vjb25kc1wiIFt0ZXh0XT1cIid0aW1lLlNlY29uZHMnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICA8YXgtY29udGVudD4gPGF4LWNyb24tc2Vjb25kcyAoc2Vjb25kc0NoYW5nZWQpPVwib25HZXRNb2RlbCgpXCI+PC9heC1jcm9uLXNlY29uZHM+PC9heC1jb250ZW50PlxuICA8L2F4LXRhYi1pdGVtPlxuICA8YXgtdGFiLWl0ZW0ga2V5PVwiTWludXRlc1wiIFt0ZXh0XT1cIid0aW1lLk1pbnV0ZXMnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICA8YXgtY29udGVudD4gPGF4LWNyb24tbWludXRlcyAobWludXRlc0NoYW5nZWQpPVwib25HZXRNb2RlbCgpXCI+PC9heC1jcm9uLW1pbnV0ZXM+PC9heC1jb250ZW50PlxuICA8L2F4LXRhYi1pdGVtPlxuICA8YXgtdGFiLWl0ZW0ga2V5PVwiSG91cnNcIiBbdGV4dF09XCIndGltZS5Ib3VycycgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgIDxheC1jb250ZW50PiA8YXgtY3Jvbi1ob3VycyAoaG91cnNDaGFuZ2VkKT1cIm9uR2V0TW9kZWwoKVwiPjwvYXgtY3Jvbi1ob3Vycz48L2F4LWNvbnRlbnQ+XG4gIDwvYXgtdGFiLWl0ZW0+XG4gIDxheC10YWItaXRlbSBrZXk9XCJEYXlzXCIgW3RleHRdPVwiJ3RpbWUuRGF5cycgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgIDxheC1jb250ZW50PiA8YXgtY3Jvbi1kYXkgKGRheUNoYW5nZWQpPVwib25HZXRNb2RlbCgpXCI+PC9heC1jcm9uLWRheT48L2F4LWNvbnRlbnQ+XG4gIDwvYXgtdGFiLWl0ZW0+XG4gIDxheC10YWItaXRlbSBrZXk9XCJNb250aHNcIiBbdGV4dF09XCIndGltZS5Nb250aHMnIHwgdHJhbnNsYXRlIHwgYXN5bmNcIj5cbiAgICA8YXgtY29udGVudD4gPGF4LWNyb24tbW9udGggKG1vbnRoQ2hhbmdlZCk9XCJvbkdldE1vZGVsKClcIj48L2F4LWNyb24tbW9udGg+PC9heC1jb250ZW50PlxuICA8L2F4LXRhYi1pdGVtPlxuICA8YXgtdGFiLWl0ZW0ga2V5PVwiWWVhcnNcIiBbdGV4dF09XCIndGltZS5ZZWFycycgfCB0cmFuc2xhdGUgfCBhc3luY1wiPlxuICAgIDxheC1jb250ZW50PjxheC1jcm9uLXllYXIgKHllYXJDaGFuZ2VkKT1cIm9uR2V0TW9kZWwoKVwiPjwvYXgtY3Jvbi15ZWFyPjwvYXgtY29udGVudD5cbiAgPC9heC10YWItaXRlbT5cbjwvYXgtdGFicz5cblxuPGRpdiBjbGFzcz1cImF4LWNyb24tdG9vbHMtY29udGFpbmVyXCI+XG4gIDxuZy10ZW1wbGF0ZSBbYXhUYWJDb250ZW50XSAjY3JvblRhYj1cImF4VGFiQ29udGVudFwiPiA8L25nLXRlbXBsYXRlPlxuPC9kaXY+XG4iXX0=