@datarailsshared/datarailsshared 1.5.533 → 1.5.535

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.
@@ -4,6 +4,7 @@ import { DateAdapter, MAT_DATE_LOCALE } from '@angular/material/core';
4
4
  import { MAT_MOMENT_DATE_ADAPTER_OPTIONS, MomentDateAdapter } from '@angular/material-moment-adapter';
5
5
  import { find as _find, cloneDeep as _cloneDeep } from 'lodash';
6
6
  import moment from 'moment';
7
+ import { DatePickerPeriodPosition } from '../../models/datePicker';
7
8
  import * as i0 from "@angular/core";
8
9
  import * as i1 from "@angular/common";
9
10
  import * as i2 from "@angular/forms";
@@ -30,7 +31,7 @@ function ForecastTagComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
30
31
  i0.ɵɵadvance(5);
31
32
  i0.ɵɵproperty("ngModel", ctx_r0.forecastValue)("disabled", ctx_r0.disabled)("items", ctx_r0.forecastTags);
32
33
  i0.ɵɵadvance(4);
33
- i0.ɵɵproperty("ngModel", ctx_r0.forecastYear)("datepickerFilter", ctx_r0.dateFilter.bind(ctx_r0))("disabled", ctx_r0.disabled);
34
+ i0.ɵɵproperty("ngModel", ctx_r0.forecastYear)("datepickerFilter", ctx_r0.dateFilter.bind(ctx_r0))("periodPosition", ctx_r0.datePickerPeriodPosition.MIDDLE_OF_PERIOD)("disabled", ctx_r0.disabled);
34
35
  } }
35
36
  function ForecastTagComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
36
37
  const _r9 = i0.ɵɵgetCurrentView();
@@ -55,6 +56,7 @@ const FORECAST_DEFAULT_DATE_FORMAT = 'MM/DD/yyyy';
55
56
  export class ForecastTagComponent extends AnyTagComponent {
56
57
  constructor() {
57
58
  super();
59
+ this.datePickerPeriodPosition = DatePickerPeriodPosition;
58
60
  this.lockedDate = [];
59
61
  this.tagAdditionalSettings = {};
60
62
  this.forecastValue = undefined;
@@ -87,6 +89,7 @@ export class ForecastTagComponent extends AnyTagComponent {
87
89
  this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
88
90
  this.forecastYear = moment
89
91
  .utc(`${this.firstDayMonthOfYear}/${this.firstDayMonthOfYear}/${this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, this.fiscalYearBack)}`, FORECAST_DEFAULT_DATE_FORMAT)
92
+ .set('hours', 12)
90
93
  .unix();
91
94
  this.updateLockedDate();
92
95
  if (!this.initDateValue) {
@@ -186,8 +189,8 @@ export class ForecastTagComponent extends AnyTagComponent {
186
189
  useClass: MomentDateAdapter,
187
190
  deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
188
191
  },
189
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["splitInputsTpl", ""], [1, "forecast-tag__container"], [1, "forecast-tag__forecast"], [1, "tag__label"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", 3, "ngModel", "disabled", "items", "ngModelChange"], [1, "forecast-tag__year"], ["format", "year", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], [1, "forecast-tag__split-container"], [1, "forecast-tag__split-dropdowns"], ["format", "year", 1, "no-right-border-radius", "no-right-border", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", "no-left-border-radius", "", 3, "ngModel", "disabled", "items", "ngModelChange"]], template: function ForecastTagComponent_Template(rf, ctx) { if (rf & 1) {
190
- i0.ɵɵtemplate(0, ForecastTagComponent_ng_container_0_Template, 10, 6, "ng-container", 0);
192
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["splitInputsTpl", ""], [1, "forecast-tag__container"], [1, "forecast-tag__forecast"], [1, "tag__label"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", 3, "ngModel", "disabled", "items", "ngModelChange"], [1, "forecast-tag__year"], ["format", "year", 3, "ngModel", "datepickerFilter", "periodPosition", "disabled", "ngModelChange"], [1, "forecast-tag__split-container"], [1, "forecast-tag__split-dropdowns"], ["format", "year", 1, "no-right-border-radius", "no-right-border", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", "no-left-border-radius", "", 3, "ngModel", "disabled", "items", "ngModelChange"]], template: function ForecastTagComponent_Template(rf, ctx) { if (rf & 1) {
193
+ i0.ɵɵtemplate(0, ForecastTagComponent_ng_container_0_Template, 10, 7, "ng-container", 0);
191
194
  i0.ɵɵtemplate(1, ForecastTagComponent_ng_template_1_Template, 6, 6, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
192
195
  } if (rf & 2) {
193
196
  const _r1 = i0.ɵɵreference(2);
@@ -202,7 +205,7 @@ export class ForecastTagComponent extends AnyTagComponent {
202
205
  useClass: MomentDateAdapter,
203
206
  deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
204
207
  },
205
- ], template: "<ng-container *ngIf=\"!tagAdditionalSettings?.showSplitInputs; else splitInputsTpl\">\n <div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n </div>\n </div>\n</ng-container>\n\n<ng-template #splitInputsTpl>\n <div class=\"forecast-tag__split-container\">\n <p class=\"tag__label\">Period</p>\n <div class=\"forecast-tag__split-dropdowns\">\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n class=\"no-right-border-radius no-right-border\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n no-left-border-radius\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n </div>\n</ng-template>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__split-container{display:flex;flex-direction:column}.forecast-tag__split-dropdowns{display:flex;flex-direction:row}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}dr-date-picker.no-right-border-radius ::ng-deep{border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border ::ng-deep{border-right:none!important}\n"] }]
208
+ ], template: "<ng-container *ngIf=\"!tagAdditionalSettings?.showSplitInputs; else splitInputsTpl\">\n <div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [periodPosition]=\"datePickerPeriodPosition.MIDDLE_OF_PERIOD\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n </div>\n </div>\n</ng-container>\n\n<ng-template #splitInputsTpl>\n <div class=\"forecast-tag__split-container\">\n <p class=\"tag__label\">Period</p>\n <div class=\"forecast-tag__split-dropdowns\">\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n class=\"no-right-border-radius no-right-border\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n no-left-border-radius\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n </div>\n</ng-template>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__split-container{display:flex;flex-direction:column}.forecast-tag__split-dropdowns{display:flex;flex-direction:row}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}dr-date-picker.no-right-border-radius ::ng-deep{border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border ::ng-deep{border-right:none!important}\n"] }]
206
209
  }], function () { return []; }, { fiscalYearStartsFrom: [{
207
210
  type: Input
208
211
  }], fiscalYearBack: [{
@@ -212,4 +215,4 @@ export class ForecastTagComponent extends AnyTagComponent {
212
215
  }], tagAdditionalSettings: [{
213
216
  type: Input
214
217
  }] }); })();
215
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxTQUFTLElBQUksVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQzs7Ozs7Ozs7SUNONUIsNkJBQW1GO0lBQy9FLDhCQUFxQyxhQUFBLFdBQUE7SUFFUCx3QkFBUTtJQUFBLGlCQUFJO0lBQ2xDLG9DQU84QztJQUwxQyxvUEFBMkIsZ0xBS1YsZUFBQSw4QkFBdUIsQ0FBQSxJQUxiO0lBS2UsaUJBQVksRUFBQTtJQUU5RCw4QkFBZ0MsV0FBQTtJQUNOLG9CQUFJO0lBQUEsaUJBQUk7SUFDOUIseUNBSytDO0lBSDNDLHdQQUEwQixxTEFHVCxlQUFBLCtCQUF3QixDQUFBLElBSGY7SUFHaUIsaUJBQWlCLEVBQUEsRUFBQTtJQUc1RSwwQkFBZTs7O0lBakJDLGVBQTJCO0lBQTNCLDhDQUEy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S0FBSyxJQUFJLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQWhLUSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3T0FSbEI7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztpQkFDM0Q7YUFDSjtZQ3ZCTCx3RkF1QmU7WUFFZixzSEFzQmM7OztZQS9DQyw4R0FBK0MsaUJBQUE7Ozt1RkR5QmpELG9CQUFvQjtjQVpoQyxTQUFTOzJCQUVJLGNBQWMsYUFFYjtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsV0FBVzt3QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjt3QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3FCQUMzRDtpQkFDSjtzQ0FHUSxvQkFBb0I7a0JBQTVCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9hbnktdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IGZpbmQgYXMgX2ZpbmQsIGNsb25lRGVlcCBhcyBfY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IElUYWdBZGRpdGlvbmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9kci10YWdzL2RyLXRhZy50eXBlcyc7XG5cbi8qIEJFRk9SRSBNRVJHRSBJTlRPIE1BU1RFUiBZT1UgTVVTVCBDT05TVUxUIFdJVEggQVJURU0gTEFaSVVLICEhISovXG5cbmNvbnN0IEZPUkVDQVNUX0RFRkFVTFRfREFURV9GT1JNQVQgPSAnTU0vREQveXl5eSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2ZvcmVjYXN0LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9yZWNhc3RUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJTdGFydHNGcm9tPzogbnVtYmVyO1xuICAgIEBJbnB1dCgpIGZpc2NhbFllYXJCYWNrPzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBsb2NrZWREYXRlOiBhbnlbXSA9IFtdO1xuICAgIEBJbnB1dCgpIHRhZ0FkZGl0aW9uYWxTZXR0aW5nczogSVRhZ0FkZGl0aW9uYWxTZXR0aW5ncyA9IHt9O1xuXG4gICAgZm9yZWNhc3RWYWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xuICAgIGZvcmVjYXN0WWVhcjogbnVtYmVyO1xuICAgIGlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcblxuICAgIGZvcmVjYXN0VGFnczogYW55W10gPSBbXG4gICAgICAgIHsgdmFsdWU6IDAsIGxhYmVsOiAnMCsxMicsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiAxLCBsYWJlbDogJzErMTEnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogMiwgbGFiZWw6ICcyKzEwJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDMsIGxhYmVsOiAnMys5JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDQsIGxhYmVsOiAnNCs4JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDUsIGxhYmVsOiAnNSs3JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDYsIGxhYmVsOiAnNis2JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDcsIGxhYmVsOiAnNys1JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDgsIGxhYmVsOiAnOCs0JywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDksIGxhYmVsOiAnOSszJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDEwLCBsYWJlbDogJzEwKzInLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogMTEsIGxhYmVsOiAnMTErMScsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgIF07XG5cbiAgICBwcml2YXRlIGluaXREYXRlVmFsdWUgPSBudWxsO1xuICAgIHByaXZhdGUgZmlyc3REYXlNb250aE9mWWVhciA9ICcwMSc7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgICAgIGlmIChjaGFuZ2VzLmxvY2tlZERhdGUpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdERhdGUoKSB7XG4gICAgICAgIGNvbnN0IGRhdGVWYWwgPSB0aGlzLmRlZmF1bHRWYWx1ZSA/IG1vbWVudC51bml4KHRoaXMuZGVmYXVsdFZhbHVlKSA6IG1vbWVudCgpO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgICAgdGhpcy5mb3JlY2FzdFZhbHVlID0gdGhpcy5nZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKSAtIDE7XG4gICAgICAgIHRoaXMuZm9yZWNhc3RZZWFyID0gbW9tZW50XG4gICAgICAgICAgICAudXRjKFxuICAgICAgICAgICAgICAgIGAke3RoaXMuZmlyc3REYXlNb250aE9mWWVhcn0vJHt0aGlzLmZpcnN0RGF5TW9udGhPZlllYXJ9LyR7dGhpcy5nZXRGaXNjYWxZZWFyRnJvbURhdGUoZGF0ZVZhbCwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIHRoaXMuZmlzY2FsWWVhckJhY2spfWAsXG4gICAgICAgICAgICAgICAgRk9SRUNBU1RfREVGQVVMVF9EQVRFX0ZPUk1BVCxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC51bml4KCk7XG5cbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmluaXREYXRlVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5pdERhdGVWYWx1ZSA9IF9jbG9uZURlZXAodGhpcy5kYXRlT2JqLmRhdGUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgdXBkYXRlTG9ja2VkRGF0ZSgpIHtcbiAgICAgICAgY29uc3QgeWVhciA9IG1vbWVudC51bml4KHRoaXMuZm9yZWNhc3RZZWFyKS55ZWFyKCk7XG5cbiAgICAgICAgdGhpcy5mb3JlY2FzdFRhZ3MgPSB0aGlzLmZvcmVjYXN0VGFncy5tYXAoKGZvcmVjYXN0VGFnKSA9PiB7XG4gICAgICAgICAgICBmb3JlY2FzdFRhZy5kaXNhYmxlZCA9IHRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBsb2NrZWQgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgICAgIHJldHVybiBsb2NrZWQubW9udGgoKSA9PT0gZm9yZWNhc3RUYWcudmFsdWUgJiYgK2xvY2tlZC55ZWFyKCkgPT09ICt5ZWFyO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybiBmb3JlY2FzdFRhZztcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgaW5pdE5hbWUoKSB7XG4gICAgICAgIGlmICghdGhpcy5uYW1lKSB7XG4gICAgICAgICAgICB0aGlzLm5hbWUgPSAnRm9yZWNhc3QgKE5ldyknO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkge1xuICAgICAgICBjb25zdCBhbGxfbW9udGhzID0gW107XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpIDwgMTM7IGkrKykge1xuICAgICAgICAgICAgYWxsX21vbnRocy5wdXNoKGkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbTsgaSsrKSB7XG4gICAgICAgICAgICBhbGxfbW9udGhzLnB1c2goaSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWxsX21vbnRocy5pbmRleE9mKGRhdGVPYmoubW9udGgoKSArIDEpICsgMTtcbiAgICB9XG5cbiAgICBnZXRGaXNjYWxZZWFyRnJvbURhdGUoZGF0ZU9iaiwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20sIGZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgbGV0IGZpc2NhbF95ZWFyID0gZGF0ZU9iai55ZWFyKCk7XG5cbiAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICBpZiAoZGF0ZU9iai5tb250aCgpICsgMSA+PSBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAmJiBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSAhPT0gMSkge1xuICAgICAgICAgICAgICAgIGZpc2NhbF95ZWFyICs9IDE7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoZGF0ZU9iai5tb250aCgpICsgMSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgLT0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmaXNjYWxfeWVhcjtcbiAgICB9XG5cbiAgICBjaGFuZ2VUYWdJbnB1dEhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuY2hvc2VuVGFnSGFuZGxlcigpO1xuICAgIH1cblxuICAgIGNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMudXBkYXRlTG9ja2VkRGF0ZSgpO1xuICAgICAgICB0aGlzLmluaXREYXRlVmFsdWUgPSBfY2xvbmVEZWVwKHRoaXMuZGF0ZU9iai5kYXRlKTtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hvc2VuVGFnSGFuZGxlcigpIHtcbiAgICAgICAgaWYgKHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCkgcmV0dXJuO1xuXG4gICAgICAgIGNvbnN0IG1vbnRoID0gdGhpcy5mb3JlY2FzdFZhbHVlO1xuICAgICAgICBjb25zdCB5ZWFyID0gbW9tZW50LnVuaXgodGhpcy5mb3JlY2FzdFllYXIpO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSA9IHRoaXMuZmlzY2FsWWVhclN0YXJ0c0Zyb20gfHwgMTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfYmFjayA9IHRoaXMuZmlzY2FsWWVhckJhY2sgfHwgZmFsc2U7XG5cbiAgICAgICAgaWYgKCFOdW1iZXIuaXNOYU4obW9udGgpICYmICFOdW1iZXIuaXNOYU4oeWVhcikpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSh5ZWFyLnllYXIoKSwgbW9udGgsIDEsIDEyLCAwLCAwLCAwKTtcblxuICAgICAgICAgICAgaWYgKGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFmaXNjYWxfeWVhcl9iYWNrKSB7XG4gICAgICAgICAgICAgICAgICAgIGRhdGUuc2V0TW9udGgoZGF0ZS5nZXRNb250aCgpIC0gMTMgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxICsgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5kYXRlT2JqLmRhdGUgPSBtb21lbnQoZGF0ZSkudW5peCgpO1xuXG4gICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0RhdGVFdmVudEhhcHBlbmVkID0gZmFsc2U7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdFRhZzogSURhdGVUYWcgPSB7XG4gICAgICAgICAgICBuYW1lOiB0aGlzLm5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogdGhpcy5kYXRlT2JqLmRhdGUsXG4gICAgICAgICAgICBsYWJlbDogYCR7X2ZpbmQodGhpcy5mb3JlY2FzdFRhZ3MsIHsgdmFsdWU6IHRoaXMuZm9yZWNhc3RWYWx1ZSB9KT8ubGFiZWx9ICgke3llYXIueWVhcigpfSlgLFxuICAgICAgICAgICAgbG9ja2VkOiAhdGhpcy5kYXRlRmlsdGVyKG1vbWVudC51bml4KHRoaXMuZGF0ZU9iai5kYXRlKSksXG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5kYXRlQ2hhbmdlLmVtaXQocmVzdWx0VGFnKTtcbiAgICB9XG5cbiAgICBkYXRlRmlsdGVyKGRhdGUpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBkYXRlLnllYXIoKTtcblxuICAgICAgICByZXR1cm4gIXRoaXMubG9ja2VkRGF0ZS5zb21lKCh0aW1lc3RhbXApID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGxvY2tEYXRlID0gbW9tZW50LnVuaXgodGltZXN0YW1wKTtcbiAgICAgICAgICAgIHJldHVybiBsb2NrRGF0ZS5tb250aCgpID09PSBtb250aCAmJiBsb2NrRGF0ZS55ZWFyKCkgPT09IHllYXI7XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCIhdGFnQWRkaXRpb25hbFNldHRpbmdzPy5zaG93U3BsaXRJbnB1dHM7IGVsc2Ugc3BsaXRJbnB1dHNUcGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19jb250YWluZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fZm9yZWNhc3RcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPkZvcmVjYXN0PC9wPlxuICAgICAgICAgICAgPGRyLXNlbGVjdFxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VsZWN0XCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcmVjYXN0VmFsdWVcIlxuICAgICAgICAgICAgICAgIGJpbmRMYWJlbD1cImxhYmVsXCJcbiAgICAgICAgICAgICAgICBiaW5kVmFsdWU9XCJ2YWx1ZVwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICBbaXRlbXNdPVwiZm9yZWNhc3RUYWdzXCJcbiAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJjaGFuZ2VUYWdJbnB1dEhhbmRsZXIoKVwiPjwvZHItc2VsZWN0PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19feWVhclwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+WWVhcjwvcD5cbiAgICAgICAgICAgIDxkci1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgIGZvcm1hdD1cInllYXJcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RZZWFyXCJcbiAgICAgICAgICAgICAgICBbZGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyLmJpbmQodGhpcylcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlWWVhcklucHV0SGFuZGxlcigpXCI+PC9kci1kYXRlLXBpY2tlcj5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLWNvbnRhaW5lcj5cblxuPG5nLXRlbXBsYXRlICNzcGxpdElucHV0c1RwbD5cbiAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19zcGxpdC1jb250YWluZXJcIj5cbiAgICAgICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+UGVyaW9kPC9wPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19zcGxpdC1kcm9wZG93bnNcIj5cbiAgICAgICAgICAgIDxkci1kYXRlLXBpY2tlclxuICAgICAgICAgICAgICAgIGZvcm1hdD1cInllYXJcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RZZWFyXCJcbiAgICAgICAgICAgICAgICBbZGF0ZXBpY2tlckZpbHRlcl09XCJkYXRlRmlsdGVyLmJpbmQodGhpcylcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJuby1yaWdodC1ib3JkZXItcmFkaXVzIG5vLXJpZ2h0LWJvcmRlclwiXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlWWVhcklucHV0SGFuZGxlcigpXCI+PC9kci1kYXRlLXBpY2tlcj5cbiAgICAgICAgICAgIDxkci1zZWxlY3RcbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIlNlbGVjdFwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JlY2FzdFZhbHVlXCJcbiAgICAgICAgICAgICAgICBiaW5kTGFiZWw9XCJsYWJlbFwiXG4gICAgICAgICAgICAgICAgYmluZFZhbHVlPVwidmFsdWVcIlxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgW2l0ZW1zXT1cImZvcmVjYXN0VGFnc1wiXG4gICAgICAgICAgICAgICAgbm8tbGVmdC1ib3JkZXItcmFkaXVzXG4gICAgICAgICAgICAgICAgKG5nTW9kZWxDaGFuZ2UpPVwiY2hhbmdlVGFnSW5wdXRIYW5kbGVyKClcIj48L2RyLXNlbGVjdD5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
218
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2RhdGFyYWlsc3NoYXJlZC9zcmMvbGliL2RhdGUtdGFncy9mb3JlY2FzdC10YWcvZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUE0QixNQUFNLGVBQWUsQ0FBQztBQUUzRSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdkQsT0FBTyxFQUFFLFdBQVcsRUFBRSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsK0JBQStCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUN0RyxPQUFPLEVBQUUsSUFBSSxJQUFJLEtBQUssRUFBRSxTQUFTLElBQUksVUFBVSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ2hFLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7SUNSbkUsNkJBQW1GO0lBQy9FLDhCQUFxQyxhQUFBLFdBQUE7SUFFUCx3QkFBUTtJQUFBLGlCQUFJO0lBQ2xDLG9DQU84QztJQUwxQyxvUEFBMkIsZ0xBS1YsZUFBQSw4QkFBdUIsQ0FBQSxJQUxiO0lBS2UsaUJBQVksRUFBQTtJQUU5RCw4QkFBZ0MsV0FBQTtJQUNOLG9CQUFJO0lBQUEsaUJBQUk7SUFDOUIseUNBTStDO0lBSjNDLHdQQUEwQixxTEFJVCxlQUFBLCtCQUF3QixDQUFBLElBSmY7SUFJaUIsaUJBQWlCLEVB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LE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7WUFDeEMsT0FBTyxRQUFRLENBQUMsS0FBSyxFQUFFLEtBQUssS0FBSyxJQUFJLFFBQVEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxJQUFJLENBQUM7UUFDbEUsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO3dHQWxLUSxvQkFBb0I7bUdBQXBCLG9CQUFvQix3T0FSbEI7Z0JBQ1A7b0JBQ0ksT0FBTyxFQUFFLFdBQVc7b0JBQ3BCLFFBQVEsRUFBRSxpQkFBaUI7b0JBQzNCLElBQUksRUFBRSxDQUFDLGVBQWUsRUFBRSwrQkFBK0IsQ0FBQztpQkFDM0Q7YUFDSjtZQ3hCTCx3RkF3QmU7WUFFZixzSEFzQmM7OztZQWhEQyw4R0FBK0MsaUJBQUE7Ozt1RkQwQmpELG9CQUFvQjtjQVpoQyxTQUFTOzJCQUVJLGNBQWMsYUFFYjtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsV0FBVzt3QkFDcEIsUUFBUSxFQUFFLGlCQUFpQjt3QkFDM0IsSUFBSSxFQUFFLENBQUMsZUFBZSxFQUFFLCtCQUErQixDQUFDO3FCQUMzRDtpQkFDSjtzQ0FJUSxvQkFBb0I7a0JBQTVCLEtBQUs7WUFDRyxjQUFjO2tCQUF0QixLQUFLO1lBQ0csVUFBVTtrQkFBbEIsS0FBSztZQUNHLHFCQUFxQjtrQkFBN0IsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSURhdGVUYWcgfSBmcm9tICcuLi8uLi9tb2RlbHMvc2VydmVyVGFncyc7XG5pbXBvcnQgeyBBbnlUYWdDb21wb25lbnQgfSBmcm9tICcuLi9hbnktdGFnLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEYXRlQWRhcHRlciwgTUFUX0RBVEVfTE9DQUxFIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBNQVRfTU9NRU5UX0RBVEVfQURBUFRFUl9PUFRJT05TLCBNb21lbnREYXRlQWRhcHRlciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLW1vbWVudC1hZGFwdGVyJztcbmltcG9ydCB7IGZpbmQgYXMgX2ZpbmQsIGNsb25lRGVlcCBhcyBfY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcbmltcG9ydCB7IElUYWdBZGRpdGlvbmFsU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9kci10YWdzL2RyLXRhZy50eXBlcyc7XG5pbXBvcnQgeyBEYXRlUGlja2VyUGVyaW9kUG9zaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZGF0ZVBpY2tlcic7XG5cbi8qIEJFRk9SRSBNRVJHRSBJTlRPIE1BU1RFUiBZT1UgTVVTVCBDT05TVUxUIFdJVEggQVJURU0gTEFaSVVLICEhISovXG5cbmNvbnN0IEZPUkVDQVNUX0RFRkFVTFRfREFURV9GT1JNQVQgPSAnTU0vREQveXl5eSc7XG5cbkBDb21wb25lbnQoe1xuICAgIHRlbXBsYXRlVXJsOiAnZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5odG1sJyxcbiAgICBzZWxlY3RvcjogJ2ZvcmVjYXN0LXRhZycsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9yZWNhc3QtdGFnLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgdXNlQ2xhc3M6IE1vbWVudERhdGVBZGFwdGVyLFxuICAgICAgICAgICAgZGVwczogW01BVF9EQVRFX0xPQ0FMRSwgTUFUX01PTUVOVF9EQVRFX0FEQVBURVJfT1BUSU9OU10sXG4gICAgICAgIH0sXG4gICAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRm9yZWNhc3RUYWdDb21wb25lbnQgZXh0ZW5kcyBBbnlUYWdDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICAgIHJlYWRvbmx5IGRhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbiA9IERhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbjtcbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyU3RhcnRzRnJvbT86IG51bWJlcjtcbiAgICBASW5wdXQoKSBmaXNjYWxZZWFyQmFjaz86IGJvb2xlYW47XG4gICAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55W10gPSBbXTtcbiAgICBASW5wdXQoKSB0YWdBZGRpdGlvbmFsU2V0dGluZ3M6IElUYWdBZGRpdGlvbmFsU2V0dGluZ3MgPSB7fTtcblxuICAgIGZvcmVjYXN0VmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcbiAgICBmb3JlY2FzdFllYXI6IG51bWJlcjtcbiAgICBpc0RhdGVFdmVudEhhcHBlbmVkID0gZmFsc2U7XG5cbiAgICBmb3JlY2FzdFRhZ3M6IGFueVtdID0gW1xuICAgICAgICB7IHZhbHVlOiAwLCBsYWJlbDogJzArMTInLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICAgICAgeyB2YWx1ZTogMSwgbGFiZWw6ICcxKzExJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDIsIGxhYmVsOiAnMisxMCcsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiAzLCBsYWJlbDogJzMrOScsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA0LCBsYWJlbDogJzQrOCcsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA1LCBsYWJlbDogJzUrNycsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA2LCBsYWJlbDogJzYrNicsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA3LCBsYWJlbDogJzcrNScsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA4LCBsYWJlbDogJzgrNCcsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiA5LCBsYWJlbDogJzkrMycsIGRpc2FibGVkOiBmYWxzZSB9LFxuICAgICAgICB7IHZhbHVlOiAxMCwgbGFiZWw6ICcxMCsyJywgZGlzYWJsZWQ6IGZhbHNlIH0sXG4gICAgICAgIHsgdmFsdWU6IDExLCBsYWJlbDogJzExKzEnLCBkaXNhYmxlZDogZmFsc2UgfSxcbiAgICBdO1xuXG4gICAgcHJpdmF0ZSBpbml0RGF0ZVZhbHVlID0gbnVsbDtcbiAgICBwcml2YXRlIGZpcnN0RGF5TW9udGhPZlllYXIgPSAnMDEnO1xuXG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBpZiAoY2hhbmdlcy5sb2NrZWREYXRlKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGluaXREYXRlKCkge1xuICAgICAgICBjb25zdCBkYXRlVmFsID0gdGhpcy5kZWZhdWx0VmFsdWUgPyBtb21lbnQudW5peCh0aGlzLmRlZmF1bHRWYWx1ZSkgOiBtb21lbnQoKTtcbiAgICAgICAgY29uc3QgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gPSB0aGlzLmZpc2NhbFllYXJTdGFydHNGcm9tIHx8IDE7XG4gICAgICAgIHRoaXMuZm9yZWNhc3RWYWx1ZSA9IHRoaXMuZ2V0RmlzY2FsTW9udGhGcm9tRGF0ZShkYXRlVmFsLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSkgLSAxO1xuICAgICAgICB0aGlzLmZvcmVjYXN0WWVhciA9IG1vbWVudFxuICAgICAgICAgICAgLnV0YyhcbiAgICAgICAgICAgICAgICBgJHt0aGlzLmZpcnN0RGF5TW9udGhPZlllYXJ9LyR7dGhpcy5maXJzdERheU1vbnRoT2ZZZWFyfS8ke3RoaXMuZ2V0RmlzY2FsWWVhckZyb21EYXRlKGRhdGVWYWwsIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tLCB0aGlzLmZpc2NhbFllYXJCYWNrKX1gLFxuICAgICAgICAgICAgICAgIEZPUkVDQVNUX0RFRkFVTFRfREFURV9GT1JNQVQsXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc2V0KCdob3VycycsIDEyKVxuICAgICAgICAgICAgLnVuaXgoKTtcblxuICAgICAgICB0aGlzLnVwZGF0ZUxvY2tlZERhdGUoKTtcblxuICAgICAgICBpZiAoIXRoaXMuaW5pdERhdGVWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGF0ZVZhbHVlID0gX2Nsb25lRGVlcCh0aGlzLmRhdGVPYmouZGF0ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB1cGRhdGVMb2NrZWREYXRlKCkge1xuICAgICAgICBjb25zdCB5ZWFyID0gbW9tZW50LnVuaXgodGhpcy5mb3JlY2FzdFllYXIpLnllYXIoKTtcblxuICAgICAgICB0aGlzLmZvcmVjYXN0VGFncyA9IHRoaXMuZm9yZWNhc3RUYWdzLm1hcCgoZm9yZWNhc3RUYWcpID0+IHtcbiAgICAgICAgICAgIGZvcmVjYXN0VGFnLmRpc2FibGVkID0gdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnN0IGxvY2tlZCA9IG1vbWVudC51bml4KHRpbWVzdGFtcCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGxvY2tlZC5tb250aCgpID09PSBmb3JlY2FzdFRhZy52YWx1ZSAmJiArbG9ja2VkLnllYXIoKSA9PT0gK3llYXI7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgcmV0dXJuIGZvcmVjYXN0VGFnO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpbml0TmFtZSgpIHtcbiAgICAgICAgaWYgKCF0aGlzLm5hbWUpIHtcbiAgICAgICAgICAgIHRoaXMubmFtZSA9ICdGb3JlY2FzdCAoTmV3KSc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRGaXNjYWxNb250aEZyb21EYXRlKGRhdGVPYmosIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKSB7XG4gICAgICAgIGNvbnN0IGFsbF9tb250aHMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBpID0gZmlzY2FsX3llYXJfc3RhcnRzX2Zyb207IGkgPCAxMzsgaSsrKSB7XG4gICAgICAgICAgICBhbGxfbW9udGhzLnB1c2goaSk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tOyBpKyspIHtcbiAgICAgICAgICAgIGFsbF9tb250aHMucHVzaChpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhbGxfbW9udGhzLmluZGV4T2YoZGF0ZU9iai5tb250aCgpICsgMSkgKyAxO1xuICAgIH1cblxuICAgIGdldEZpc2NhbFllYXJGcm9tRGF0ZShkYXRlT2JqLCBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSwgZmlzY2FsX3llYXJfYmFjaykge1xuICAgICAgICBsZXQgZmlzY2FsX3llYXIgPSBkYXRlT2JqLnllYXIoKTtcblxuICAgICAgICBpZiAoIWZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLm1vbnRoKCkgKyAxID49IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICYmIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tICE9PSAxKSB7XG4gICAgICAgICAgICAgICAgZmlzY2FsX3llYXIgKz0gMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChkYXRlT2JqLm1vbnRoKCkgKyAxIDwgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gJiYgZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBmaXNjYWxfeWVhciAtPSAxO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZpc2NhbF95ZWFyO1xuICAgIH1cblxuICAgIGNoYW5nZVRhZ0lucHV0SGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5jaG9zZW5UYWdIYW5kbGVyKCk7XG4gICAgfVxuXG4gICAgY2hhbmdlWWVhcklucHV0SGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy51cGRhdGVMb2NrZWREYXRlKCk7XG4gICAgICAgIHRoaXMuaW5pdERhdGVWYWx1ZSA9IF9jbG9uZURlZXAodGhpcy5kYXRlT2JqLmRhdGUpO1xuICAgICAgICB0aGlzLmNob3NlblRhZ0hhbmRsZXIoKTtcbiAgICB9XG5cbiAgICBjaG9zZW5UYWdIYW5kbGVyKCkge1xuICAgICAgICBpZiAodGhpcy5pc0RhdGVFdmVudEhhcHBlbmVkKSByZXR1cm47XG5cbiAgICAgICAgY29uc3QgbW9udGggPSB0aGlzLmZvcmVjYXN0VmFsdWU7XG4gICAgICAgIGNvbnN0IHllYXIgPSBtb21lbnQudW5peCh0aGlzLmZvcmVjYXN0WWVhcik7XG4gICAgICAgIGNvbnN0IGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tID0gdGhpcy5maXNjYWxZZWFyU3RhcnRzRnJvbSB8fCAxO1xuICAgICAgICBjb25zdCBmaXNjYWxfeWVhcl9iYWNrID0gdGhpcy5maXNjYWxZZWFyQmFjayB8fCBmYWxzZTtcblxuICAgICAgICBpZiAoIU51bWJlci5pc05hTihtb250aCkgJiYgIU51bWJlci5pc05hTih5ZWFyKSkge1xuICAgICAgICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHllYXIueWVhcigpLCBtb250aCwgMSwgMTIsIDAsIDAsIDApO1xuXG4gICAgICAgICAgICBpZiAoZmlzY2FsX3llYXJfc3RhcnRzX2Zyb20gIT09IDEpIHtcbiAgICAgICAgICAgICAgICBpZiAoIWZpc2NhbF95ZWFyX2JhY2spIHtcbiAgICAgICAgICAgICAgICAgICAgZGF0ZS5zZXRNb250aChkYXRlLmdldE1vbnRoKCkgLSAxMyArIGZpc2NhbF95ZWFyX3N0YXJ0c19mcm9tKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkYXRlLnNldE1vbnRoKGRhdGUuZ2V0TW9udGgoKSAtIDEgKyBmaXNjYWxfeWVhcl9zdGFydHNfZnJvbSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmRhdGVPYmouZGF0ZSA9IG1vbWVudChkYXRlKS51bml4KCk7XG5cbiAgICAgICAgICAgIHRoaXMuaXNEYXRlRXZlbnRIYXBwZW5lZCA9IHRydWU7XG4gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRGF0ZUV2ZW50SGFwcGVuZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0VGFnOiBJRGF0ZVRhZyA9IHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSxcbiAgICAgICAgICAgIHZhbHVlOiB0aGlzLmRhdGVPYmouZGF0ZSxcbiAgICAgICAgICAgIGxhYmVsOiBgJHtfZmluZCh0aGlzLmZvcmVjYXN0VGFncywgeyB2YWx1ZTogdGhpcy5mb3JlY2FzdFZhbHVlIH0pPy5sYWJlbH0gKCR7eWVhci55ZWFyKCl9KWAsXG4gICAgICAgICAgICBsb2NrZWQ6ICF0aGlzLmRhdGVGaWx0ZXIobW9tZW50LnVuaXgodGhpcy5kYXRlT2JqLmRhdGUpKSxcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLmRhdGVDaGFuZ2UuZW1pdChyZXN1bHRUYWcpO1xuICAgIH1cblxuICAgIGRhdGVGaWx0ZXIoZGF0ZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBtb250aCA9IHRoaXMuZm9yZWNhc3RWYWx1ZTtcbiAgICAgICAgY29uc3QgeWVhciA9IGRhdGUueWVhcigpO1xuXG4gICAgICAgIHJldHVybiAhdGhpcy5sb2NrZWREYXRlLnNvbWUoKHRpbWVzdGFtcCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgbG9ja0RhdGUgPSBtb21lbnQudW5peCh0aW1lc3RhbXApO1xuICAgICAgICAgICAgcmV0dXJuIGxvY2tEYXRlLm1vbnRoKCkgPT09IG1vbnRoICYmIGxvY2tEYXRlLnllYXIoKSA9PT0geWVhcjtcbiAgICAgICAgfSk7XG4gICAgfVxufVxuIiwiPG5nLWNvbnRhaW5lciAqbmdJZj1cIiF0YWdBZGRpdGlvbmFsU2V0dGluZ3M/LnNob3dTcGxpdElucHV0czsgZWxzZSBzcGxpdElucHV0c1RwbFwiPlxuICAgIDxkaXYgY2xhc3M9XCJmb3JlY2FzdC10YWdfX2NvbnRhaW5lclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX19mb3JlY2FzdFwiPlxuICAgICAgICAgICAgPHAgY2xhc3M9XCJ0YWdfX2xhYmVsXCI+Rm9yZWNhc3Q8L3A+XG4gICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RWYWx1ZVwiXG4gICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJmb3JlY2FzdFRhZ3NcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRhZ0lucHV0SGFuZGxlcigpXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9yZWNhc3QtdGFnX195ZWFyXCI+XG4gICAgICAgICAgICA8cCBjbGFzcz1cInRhZ19fbGFiZWxcIj5ZZWFyPC9wPlxuICAgICAgICAgICAgPGRyLWRhdGUtcGlja2VyXG4gICAgICAgICAgICAgICAgZm9ybWF0PVwieWVhclwiXG4gICAgICAgICAgICAgICAgWyhuZ01vZGVsKV09XCJmb3JlY2FzdFllYXJcIlxuICAgICAgICAgICAgICAgIFtkYXRlcGlja2VyRmlsdGVyXT1cImRhdGVGaWx0ZXIuYmluZCh0aGlzKVwiXG4gICAgICAgICAgICAgICAgW3BlcmlvZFBvc2l0aW9uXT1cImRhdGVQaWNrZXJQZXJpb2RQb3NpdGlvbi5NSURETEVfT0ZfUEVSSU9EXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKVwiPjwvZHItZGF0ZS1waWNrZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG5cbjxuZy10ZW1wbGF0ZSAjc3BsaXRJbnB1dHNUcGw+XG4gICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fc3BsaXQtY29udGFpbmVyXCI+XG4gICAgICAgIDxwIGNsYXNzPVwidGFnX19sYWJlbFwiPlBlcmlvZDwvcD5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZvcmVjYXN0LXRhZ19fc3BsaXQtZHJvcGRvd25zXCI+XG4gICAgICAgICAgICA8ZHItZGF0ZS1waWNrZXJcbiAgICAgICAgICAgICAgICBmb3JtYXQ9XCJ5ZWFyXCJcbiAgICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImZvcmVjYXN0WWVhclwiXG4gICAgICAgICAgICAgICAgW2RhdGVwaWNrZXJGaWx0ZXJdPVwiZGF0ZUZpbHRlci5iaW5kKHRoaXMpXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwibm8tcmlnaHQtYm9yZGVyLXJhZGl1cyBuby1yaWdodC1ib3JkZXJcIlxuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVllYXJJbnB1dEhhbmRsZXIoKVwiPjwvZHItZGF0ZS1waWNrZXI+XG4gICAgICAgICAgICA8ZHItc2VsZWN0XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWxlY3RcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiZm9yZWNhc3RWYWx1ZVwiXG4gICAgICAgICAgICAgICAgYmluZExhYmVsPVwibGFiZWxcIlxuICAgICAgICAgICAgICAgIGJpbmRWYWx1ZT1cInZhbHVlXCJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFtpdGVtc109XCJmb3JlY2FzdFRhZ3NcIlxuICAgICAgICAgICAgICAgIG5vLWxlZnQtYm9yZGVyLXJhZGl1c1xuICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cImNoYW5nZVRhZ0lucHV0SGFuZGxlcigpXCI+PC9kci1zZWxlY3Q+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2448,7 +2448,7 @@ function ForecastTagComponent_ng_container_0_Template(rf, ctx) { if (rf & 1) {
2448
2448
  i0.ɵɵadvance(5);
2449
2449
  i0.ɵɵproperty("ngModel", ctx_r0.forecastValue)("disabled", ctx_r0.disabled)("items", ctx_r0.forecastTags);
2450
2450
  i0.ɵɵadvance(4);
2451
- i0.ɵɵproperty("ngModel", ctx_r0.forecastYear)("datepickerFilter", ctx_r0.dateFilter.bind(ctx_r0))("disabled", ctx_r0.disabled);
2451
+ i0.ɵɵproperty("ngModel", ctx_r0.forecastYear)("datepickerFilter", ctx_r0.dateFilter.bind(ctx_r0))("periodPosition", ctx_r0.datePickerPeriodPosition.MIDDLE_OF_PERIOD)("disabled", ctx_r0.disabled);
2452
2452
  } }
2453
2453
  function ForecastTagComponent_ng_template_1_Template(rf, ctx) { if (rf & 1) {
2454
2454
  const _r9 = i0.ɵɵgetCurrentView();
@@ -2473,6 +2473,7 @@ const FORECAST_DEFAULT_DATE_FORMAT = 'MM/DD/yyyy';
2473
2473
  class ForecastTagComponent extends AnyTagComponent {
2474
2474
  constructor() {
2475
2475
  super();
2476
+ this.datePickerPeriodPosition = DatePickerPeriodPosition;
2476
2477
  this.lockedDate = [];
2477
2478
  this.tagAdditionalSettings = {};
2478
2479
  this.forecastValue = undefined;
@@ -2505,6 +2506,7 @@ class ForecastTagComponent extends AnyTagComponent {
2505
2506
  this.forecastValue = this.getFiscalMonthFromDate(dateVal, fiscal_year_starts_from) - 1;
2506
2507
  this.forecastYear = moment
2507
2508
  .utc(`${this.firstDayMonthOfYear}/${this.firstDayMonthOfYear}/${this.getFiscalYearFromDate(dateVal, fiscal_year_starts_from, this.fiscalYearBack)}`, FORECAST_DEFAULT_DATE_FORMAT)
2509
+ .set('hours', 12)
2508
2510
  .unix();
2509
2511
  this.updateLockedDate();
2510
2512
  if (!this.initDateValue) {
@@ -2604,8 +2606,8 @@ class ForecastTagComponent extends AnyTagComponent {
2604
2606
  useClass: MomentDateAdapter,
2605
2607
  deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
2606
2608
  },
2607
- ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["splitInputsTpl", ""], [1, "forecast-tag__container"], [1, "forecast-tag__forecast"], [1, "tag__label"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", 3, "ngModel", "disabled", "items", "ngModelChange"], [1, "forecast-tag__year"], ["format", "year", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], [1, "forecast-tag__split-container"], [1, "forecast-tag__split-dropdowns"], ["format", "year", 1, "no-right-border-radius", "no-right-border", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", "no-left-border-radius", "", 3, "ngModel", "disabled", "items", "ngModelChange"]], template: function ForecastTagComponent_Template(rf, ctx) { if (rf & 1) {
2608
- i0.ɵɵtemplate(0, ForecastTagComponent_ng_container_0_Template, 10, 6, "ng-container", 0);
2609
+ ]), i0.ɵɵInheritDefinitionFeature, i0.ɵɵNgOnChangesFeature], decls: 3, vars: 2, consts: [[4, "ngIf", "ngIfElse"], ["splitInputsTpl", ""], [1, "forecast-tag__container"], [1, "forecast-tag__forecast"], [1, "tag__label"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", 3, "ngModel", "disabled", "items", "ngModelChange"], [1, "forecast-tag__year"], ["format", "year", 3, "ngModel", "datepickerFilter", "periodPosition", "disabled", "ngModelChange"], [1, "forecast-tag__split-container"], [1, "forecast-tag__split-dropdowns"], ["format", "year", 1, "no-right-border-radius", "no-right-border", 3, "ngModel", "datepickerFilter", "disabled", "ngModelChange"], ["placeholder", "Select", "bindLabel", "label", "bindValue", "value", "no-left-border-radius", "", 3, "ngModel", "disabled", "items", "ngModelChange"]], template: function ForecastTagComponent_Template(rf, ctx) { if (rf & 1) {
2610
+ i0.ɵɵtemplate(0, ForecastTagComponent_ng_container_0_Template, 10, 7, "ng-container", 0);
2609
2611
  i0.ɵɵtemplate(1, ForecastTagComponent_ng_template_1_Template, 6, 6, "ng-template", null, 1, i0.ɵɵtemplateRefExtractor);
2610
2612
  } if (rf & 2) {
2611
2613
  const _r1 = i0.ɵɵreference(2);
@@ -2620,7 +2622,7 @@ class ForecastTagComponent extends AnyTagComponent {
2620
2622
  useClass: MomentDateAdapter,
2621
2623
  deps: [MAT_DATE_LOCALE, MAT_MOMENT_DATE_ADAPTER_OPTIONS],
2622
2624
  },
2623
- ], template: "<ng-container *ngIf=\"!tagAdditionalSettings?.showSplitInputs; else splitInputsTpl\">\n <div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n </div>\n </div>\n</ng-container>\n\n<ng-template #splitInputsTpl>\n <div class=\"forecast-tag__split-container\">\n <p class=\"tag__label\">Period</p>\n <div class=\"forecast-tag__split-dropdowns\">\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n class=\"no-right-border-radius no-right-border\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n no-left-border-radius\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n </div>\n</ng-template>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__split-container{display:flex;flex-direction:column}.forecast-tag__split-dropdowns{display:flex;flex-direction:row}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}dr-date-picker.no-right-border-radius ::ng-deep{border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border ::ng-deep{border-right:none!important}\n"] }]
2625
+ ], template: "<ng-container *ngIf=\"!tagAdditionalSettings?.showSplitInputs; else splitInputsTpl\">\n <div class=\"forecast-tag__container\">\n <div class=\"forecast-tag__forecast\">\n <p class=\"tag__label\">Forecast</p>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n <div class=\"forecast-tag__year\">\n <p class=\"tag__label\">Year</p>\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [periodPosition]=\"datePickerPeriodPosition.MIDDLE_OF_PERIOD\"\n [disabled]=\"disabled\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n </div>\n </div>\n</ng-container>\n\n<ng-template #splitInputsTpl>\n <div class=\"forecast-tag__split-container\">\n <p class=\"tag__label\">Period</p>\n <div class=\"forecast-tag__split-dropdowns\">\n <dr-date-picker\n format=\"year\"\n [(ngModel)]=\"forecastYear\"\n [datepickerFilter]=\"dateFilter.bind(this)\"\n [disabled]=\"disabled\"\n class=\"no-right-border-radius no-right-border\"\n (ngModelChange)=\"changeYearInputHandler()\"></dr-date-picker>\n <dr-select\n placeholder=\"Select\"\n [(ngModel)]=\"forecastValue\"\n bindLabel=\"label\"\n bindValue=\"value\"\n [disabled]=\"disabled\"\n [items]=\"forecastTags\"\n no-left-border-radius\n (ngModelChange)=\"changeTagInputHandler()\"></dr-select>\n </div>\n </div>\n</ng-template>\n", styles: [".tag__label{margin:0 0 4px;color:#0c142b;font-size:14px;font-weight:400;line-height:22px}.forecast-tag__container{display:flex;align-items:center}.forecast-tag__split-container{display:flex;flex-direction:column}.forecast-tag__split-dropdowns{display:flex;flex-direction:row}.forecast-tag__year{width:50%;margin-left:24px}.forecast-tag__forecast{width:50%}dr-date-picker.no-right-border-radius ::ng-deep{border-bottom-right-radius:0!important;border-top-right-radius:0!important}dr-date-picker.no-right-border ::ng-deep{border-right:none!important}\n"] }]
2624
2626
  }], function () { return []; }, { fiscalYearStartsFrom: [{
2625
2627
  type: Input
2626
2628
  }], fiscalYearBack: [{