monkey-style-guide 2.0.203 → 2.0.204

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.
@@ -7,12 +7,14 @@ import { CurrencyPipe } from '@angular/common';
7
7
  import { Component, ViewEncapsulation, Input, forwardRef, HostListener, Output, EventEmitter, ViewChild, Inject, DEFAULT_CURRENCY_CODE, } from '@angular/core';
8
8
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
9
9
  import { MonkeyUtils } from '../../core/utils';
10
+ import * as moment_ from 'moment';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@angular/common";
12
13
  import * as i2 from "../../core";
13
14
  import * as i3 from "../icon/icon.component";
14
15
  import * as i4 from "@angular/forms";
15
16
  import * as i5 from "ngx-mask";
17
+ const moment = moment_;
16
18
  export class MonkeyInputComponent {
17
19
  constructor(currencyPipe, settingsService, cdr, defaultCurencyCode) {
18
20
  this.currencyPipe = currencyPipe;
@@ -23,16 +25,36 @@ export class MonkeyInputComponent {
23
25
  this.helperMessage = '';
24
26
  this.placeholder = '';
25
27
  this.maxLength = 255;
26
- this.maxDateToday = false;
27
28
  this.onChange = new EventEmitter();
28
29
  this.onModelChange = (value) => { };
29
30
  this.onModelTouched = (value) => { };
30
31
  this._id = `mecx-input-${MonkeyUtils.getRandomString(10)}`;
31
32
  this._disabled = false;
32
- this._maxDateToday = new Date().toISOString().split('T')[0];
33
33
  this._symbol = '';
34
+ this._maxDate = undefined;
34
35
  //not to do
35
36
  }
37
+ set maxDateToday(value) {
38
+ try {
39
+ if (value) {
40
+ this._maxDate = new Date().toISOString().split('T')[0];
41
+ }
42
+ }
43
+ catch (e) {
44
+ // ignore
45
+ }
46
+ }
47
+ set minYears(value) {
48
+ try {
49
+ if (value) {
50
+ this._maxDate = moment.default().subtract(value, 'years').toISOString().split('T')[0];
51
+ }
52
+ }
53
+ catch (e) {
54
+ console.log(e);
55
+ // ignore
56
+ }
57
+ }
36
58
  handleValue(value, apply = false) {
37
59
  if (this.onlyNumber) {
38
60
  return MonkeyUtils.handleOnlyNumbers(`${value}`);
@@ -153,7 +175,7 @@ export class MonkeyInputComponent {
153
175
  }
154
176
  }
155
177
  MonkeyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputComponent, deps: [{ token: i1.CurrencyPipe }, { token: i2.MonkeyStyleGuideSettingsService }, { token: i0.ChangeDetectorRef }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Component });
156
- MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputComponent, selector: "monkey-input", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", type: "type", infoMessage: "infoMessage", errorMessage: "errorMessage", mask: "mask", prefix: "prefix", maxLength: "maxLength", onlyNumber: "onlyNumber", onlyAlphaNumeric: "onlyAlphaNumeric", upperCase: "upperCase", lowerCase: "lowerCase", capitalize: "capitalize", currency: "currency", percent: "percent", maxDateToday: "maxDateToday", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, providers: [
178
+ MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputComponent, selector: "monkey-input", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", type: "type", infoMessage: "infoMessage", errorMessage: "errorMessage", mask: "mask", prefix: "prefix", maxLength: "maxLength", onlyNumber: "onlyNumber", onlyAlphaNumeric: "onlyAlphaNumeric", upperCase: "upperCase", lowerCase: "lowerCase", capitalize: "capitalize", currency: "currency", percent: "percent", maxDateToday: "maxDateToday", minYears: "minYears", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, providers: [
157
179
  {
158
180
  provide: NG_VALUE_ACCESSOR,
159
181
  useExisting: forwardRef(() => MonkeyInputComponent),
@@ -217,7 +239,7 @@ MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
217
239
  [disabled]="_disabled"
218
240
  [maxLength]="maxLength"
219
241
  *ngIf="!mask && !prefix"
220
- [max]="maxDateToday ? _maxDateToday : null"
242
+ [max]="_maxDate"
221
243
  #monkeyInput
222
244
  />
223
245
  <monkey-icon
@@ -304,7 +326,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
304
326
  [disabled]="_disabled"
305
327
  [maxLength]="maxLength"
306
328
  *ngIf="!mask && !prefix"
307
- [max]="maxDateToday ? _maxDateToday : null"
329
+ [max]="_maxDate"
308
330
  #monkeyInput
309
331
  />
310
332
  <monkey-icon
@@ -381,6 +403,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
381
403
  type: Input
382
404
  }], maxDateToday: [{
383
405
  type: Input
406
+ }], minYears: [{
407
+ type: Input
384
408
  }], onChange: [{
385
409
  type: Output
386
410
  }], monkeyInput: [{
@@ -394,4 +418,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
394
418
  type: HostListener,
395
419
  args: ['click']
396
420
  }] } });
397
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFHWixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxNQUFNLEVBQ04scUJBQXFCLEdBRXRCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7Ozs7Ozs7QUFpRy9DLE1BQU0sT0FBTyxvQkFBb0I7SUF1Qy9CLFlBQ1UsWUFBMEIsRUFDMUIsZUFBZ0QsRUFDaEQsR0FBc0IsRUFDUyxrQkFBMEM7UUFIekUsaUJBQVksR0FBWixZQUFZLENBQWM7UUFDMUIsb0JBQWUsR0FBZixlQUFlLENBQWlDO1FBQ2hELFFBQUcsR0FBSCxHQUFHLENBQW1CO1FBQ1MsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQTFDMUUsU0FBSSxHQUFXLGNBQWMsV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1FBRS9ELGtCQUFhLEdBQVcsRUFBRSxDQUFDO1FBQzNCLGdCQUFXLEdBQVcsRUFBRSxDQUFDO1FBT3pCLGNBQVMsR0FBVyxHQUFHLENBQUM7UUFReEIsaUJBQVksR0FBRyxLQUFLLENBQUM7UUFDcEIsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFJckMsa0JBQWEsR0FBRyxDQUFDLEtBQVUsRUFB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QWtGVDtvQkFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtvQkFDckMsU0FBUyxFQUFFO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxFQUFFLHFCQUFxQixDQUFDOzRCQUNuRCxLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxZQUFZO3FCQUNiO2lCQUNGOzswQkE0Q0ksTUFBTTsyQkFBQyxxQkFBcUI7NENBMUN0QixJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csS0FBSztzQkFBYixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxRQUFRO3NCQUFqQixNQUFNO2dCQWlCUCxXQUFXO3NCQUhWLFNBQVM7dUJBQUMsYUFBYSxFQUFFO3dCQUN4QixNQUFNLEVBQUUsSUFBSTtxQkFDYjtnQkE2RkcsS0FBSztzQkFEUixLQUFLO2dCQStCTixPQUFPO3NCQUROLFlBQVk7dUJBQUMsT0FBTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKlxuICogQ29weXJpZ2h0IE1vbmtleSBFeGNoYW5nZS4gQWxsIFJpZ2h0cyBSZXNlcnZlZFxuICogVGhpcyBzdHlsZSBndWlkZSB3YXMgZGV2ZWxvcGVkIGJ5IE1vbmtleSBFeGNoYW5nZSBUZWFtXG4gKiBNSVQgTGljZW5jZVxuICoqKioqKioqKioqKioqKioqKioqKioqKioqL1xuaW1wb3J0IHsgQ3VycmVuY3lQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIElucHV0LFxuICBmb3J3YXJkUmVmLFxuICBIb3N0TGlzdGVuZXIsXG4gIE9uSW5pdCxcbiAgRWxlbWVudFJlZixcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIFZpZXdDaGlsZCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEluamVjdCxcbiAgREVGQVVMVF9DVVJSRU5DWV9DT0RFLFxuICBJbmplY3Rpb25Ub2tlbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBNb25rZXlTdHlsZUd1aWRlU2V0dGluZ3NTZXJ2aWNlLCBNb25rZXlTdHlsZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vY29yZSc7XG5pbXBvcnQgeyBNb25rZXlVdGlscyB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtb25rZXktaW5wdXQnLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxtZWN4LWZvcm0tZmllbGQgW25nQ2xhc3NdPVwieyBkaXNhYmxlZDogX2Rpc2FibGVkIH1cIiBbaWRdPVwiX2lkXCI+XG4gICAgICA8bWVjeC1mb3JtLWZpZWxkLWhlYWRlcj5cbiAgICAgICAgPGxhYmVsPlxuICAgICAgICAgIHt7IGxhYmVsIH19XG4gICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDxoZWxwZXI+XG4gICAgICAgICAge3sgaGVscGVyTWVzc2FnZSB9fVxuICAgICAgICA8L2hlbHBlcj5cbiAgICAgIDwvbWVjeC1mb3JtLWZpZWxkLWhlYWRlcj5cbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtYm9keSBbY2xhc3MuZXJyb3JdPVwiZXJyb3JNZXNzYWdlPy50cmltKClcIj5cbiAgICAgICAgPG1vbmtleS1pY29uXG4gICAgICAgICAgW2ljb25dPVwiaWNvblwiXG4gICAgICAgICAgW2NvbG9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpID8gJyNmYTM4MzgnIDogJyM0QjRBNTMnXCJcbiAgICAgICAgICAqbmdJZj1cImljb25cIlxuICAgICAgICA+PC9tb25rZXktaWNvbj5cbiAgICAgICAgPHN5bWJvbD5cbiAgICAgICAgICB7eyBfc3ltYm9sIH19XG4gICAgICAgIDwvc3ltYm9sPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9mb3JtYXRlZFZhbHVlXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcbiAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICBbcHJlZml4XT1cInByZWZpeFwiXG4gICAgICAgICAgKm5nSWY9XCJtYXNrICYmIHByZWZpeFwiXG4gICAgICAgICAgI21vbmtleUlucHV0XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgW2lkXT1cIm5hbWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiX2Zvcm1hdGVkVmFsdWVcIlxuICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxuICAgICAgICAgIFttYXNrXT1cIm1hc2tcIlxuICAgICAgICAgICpuZ0lmPVwibWFzayAmJiAhcHJlZml4XCJcbiAgICAgICAgICAjbW9ua2V5SW5wdXRcbiAgICAgICAgLz5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICBbaWRdPVwibmFtZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJfZm9ybWF0ZWRWYWx1ZVwiXG4gICAgICAgICAgKGtleXByZXNzKT1cIm9uS2V5UHJlc3MoJGV2ZW50KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXG4gICAgICAgICAgW21heExlbmd0aF09XCJtYXhMZW5ndGhcIlxuICAgICAgICAgICpuZ0lmPVwiIW1hc2sgJiYgIXByZWZpeFwiXG4gICAgICAgICAgW21heF09XCJtYXhEYXRlVG9kYXkgPyBfbWF4RGF0ZVRvZGF5IDogbnVsbFwiXG4gICAgICAgICAgI21vbmtleUlucHV0XG4gICAgICAgIC8+XG4gICAgICAgIDxtb25rZXktaWNvblxuICAgICAgICAgIGljb249XCJleWUtb3Blbi0xNlwiXG4gICAgICAgICAgW2NvbG9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpID8gJyNmYTM4MzgnIDogJyM0QjRBNTMnXCJcbiAgICAgICAgICAqbmdJZj1cIl9vbGRUeXBlID09PSAncGFzc3dvcmQnICYmIHR5cGUgPT09ICd0ZXh0J1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0FuZEhpZGVQYXNzd29yZCgpXCJcbiAgICAgICAgPjwvbW9ua2V5LWljb24+XG4gICAgICAgIDxtb25rZXktaWNvblxuICAgICAgICAgIGljb249XCJleWUtY2xvc2VkLTE2XCJcbiAgICAgICAgICBbY29sb3JdPVwiZXJyb3JNZXNzYWdlPy50cmltKCkgPyAnI2ZhMzgzOCcgOiAnIzRCNEE1MydcIlxuICAgICAgICAgICpuZ0lmPVwiX29sZFR5cGUgPT09ICdwYXNzd29yZCcgJiYgdHlwZSA9PT0gJ3Bhc3N3b3JkJ1wiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0FuZEhpZGVQYXNzd29yZCgpXCJcbiAgICAgICAgPjwvbW9ua2V5LWljb24+XG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1ib2R5PlxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1mb290ZXI+XG4gICAgICAgIDxpbmZvPlxuICAgICAgICAgIHt7IGluZm9NZXNzYWdlIH19XG4gICAgICAgIDwvaW5mbz5cbiAgICAgICAgPGVycm9yPlxuICAgICAgICAgIHt7IGVycm9yTWVzc2FnZSB9fVxuICAgICAgICA8L2Vycm9yPlxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxuICAgIDwvbWVjeC1mb3JtLWZpZWxkPlxuICBgLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IE1vbmtleUlucHV0Q29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gICAgQ3VycmVuY3lQaXBlLFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBNb25rZXlJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQge1xuICBASW5wdXQoKSBuYW1lOiBzdHJpbmcgPSBgbWVjeC1pbnB1dC0ke01vbmtleVV0aWxzLmdldFJhbmRvbVN0cmluZygxMCl9YDtcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgaGVscGVyTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICBASW5wdXQoKSB0eXBlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGluZm9NZXNzYWdlOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGVycm9yTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBtYXNrOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByZWZpeDogc3RyaW5nO1xuICBASW5wdXQoKSBtYXhMZW5ndGg6IG51bWJlciA9IDI1NTtcbiAgQElucHV0KCkgb25seU51bWJlcjogYW55O1xuICBASW5wdXQoKSBvbmx5QWxwaGFOdW1lcmljOiBhbnk7XG4gIEBJbnB1dCgpIHVwcGVyQ2FzZTogYW55O1xuICBASW5wdXQoKSBsb3dlckNhc2U6IGFueTtcbiAgQElucHV0KCkgY2FwaXRhbGl6ZTogYW55O1xuICBASW5wdXQoKSBjdXJyZW5jeTogYW55O1xuICBASW5wdXQoKSBwZXJjZW50OiBhbnk7XG4gIEBJbnB1dCgpIG1heERhdGVUb2RheSA9IGZhbHNlO1xuICBAT3V0cHV0KCkgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwcml2YXRlIHNldHRpbmdzOiBNb25rZXlTdHlsZVNldHRpbmdzO1xuICBwcml2YXRlIGhhbmRsZWRWYWx1ZTogYW55O1xuICBwcml2YXRlIG9uTW9kZWxDaGFuZ2UgPSAodmFsdWU6IGFueSkgPT4ge307XG4gIHByaXZhdGUgb25Nb2RlbFRvdWNoZWQgPSAodmFsdWU6IGFueSkgPT4ge307XG5cbiAgcHVibGljIF9pZDogc3RyaW5nID0gYG1lY3gtaW5wdXQtJHtNb25rZXlVdGlscy5nZXRSYW5kb21TdHJpbmcoMTApfWA7XG4gIHB1YmxpYyBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHVibGljIF9vbGRUeXBlOiBzdHJpbmc7XG4gIHB1YmxpYyBfZm9ybWF0ZWRWYWx1ZTogYW55O1xuICBwdWJsaWMgX21heERhdGVUb2RheSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKS5zcGxpdCgnVCcpWzBdO1xuICBwdWJsaWMgX3N5bWJvbCA9ICcnO1xuXG4gIEBWaWV3Q2hpbGQoJ21vbmtleUlucHV0Jywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgbW9ua2V5SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwcml2YXRlIHNldHRpbmdzU2VydmljZTogTW9ua2V5U3R5bGVHdWlkZVNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChERUZBVUxUX0NVUlJFTkNZX0NPREUpIHByaXZhdGUgZGVmYXVsdEN1cmVuY3lDb2RlOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+LFxuICApIHtcbiAgICAvL25vdCB0byBkb1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSh2YWx1ZTogYW55LCBhcHBseSA9IGZhbHNlKTogYW55IHtcbiAgICBpZiAodGhpcy5vbmx5TnVtYmVyKSB7XG4gICAgICByZXR1cm4gTW9ua2V5VXRpbHMuaGFuZGxlT25seU51bWJlcnMoYCR7dmFsdWV9YCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9ubHlBbHBoYU51bWVyaWMpIHJldHVybiBNb25rZXlVdGlscy5oYW5kbGVPbmx5QWxwaGFOdW1lcmljKGAke3ZhbHVlfWApO1xuICAgIGVsc2UgaWYgKHRoaXMudXBwZXJDYXNlKSByZXR1cm4gYCR7dmFsdWV9YC50b1VwcGVyQ2FzZSgpO1xuICAgIGVsc2UgaWYgKHRoaXMubG93ZXJDYXNlKSByZXR1cm4gYCR7dmFsdWV9YC50b0xvd2VyQ2FzZSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuY2FwaXRhbGl6ZSkgcmV0dXJuIE1vbmtleVV0aWxzLmNhcGl0YWxpemUoYCR7dmFsdWV9YC50b1VwcGVyQ2FzZSgpKTtcbiAgICBlbHNlIGlmICh0aGlzLmN1cnJlbmN5IHx8IHRoaXMucGVyY2VudCkge1xuICAgICAgY29uc3QgaGFuZGxlZCA9IE1vbmtleVV0aWxzLmhhbmRsZU9ubHlOdW1iZXJzKGAke3ZhbHVlfWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlZCAvIDEwMDtcbiAgICAgIGlmKCFyZXN1bHQpIHJldHVybiAnJztcbiAgICAgIHJldHVybiByZXN1bHQudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VaZXJvKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKG5ldyBSZWdFeHAoLzAvLCAnZycpLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHRoaXM7XG4gICAgaWYgKHRoaXMuY3VycmVuY3kpIHtcbiAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMucmVwbGFjZVplcm8odmFsdWUpKSByZXR1cm4gJyc7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgc2V0dGluZ3M/LmN1cnJlbmN5Py5jb2RlIHx8ICdCUkwnLFxuICAgICAgICAnJyxcbiAgICAgICAgJzEuMi0yJyxcbiAgICAgICAgc2V0dGluZ3M/LmN1cnJlbmN5Py5sb2NhbGUgfHwgJ3B0LUJSJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVyY2VudCkge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTeW1ib2woKSB7XG4gICAgY29uc3QgeyBzZXR0aW5ncywgZGVmYXVsdEN1cmVuY3lDb2RlIH0gPSB0aGlzO1xuICAgIFxuICAgIGlmICh0aGlzLmN1cnJlbmN5KSB7XG4gICAgICBpZihkZWZhdWx0Q3VyZW5jeUNvZGUpe1xuICAgICAgICBjb25zdCBjdXIgPSB0aGlzLmRlZmF1bHRDdXJlbmN5Q29kZS50b1N0cmluZygpO1xuICAgICAgICB0aGlzLl9zeW1ib2wgPSBjdXI7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgdGhpcy5fc3ltYm9sID0ge1xuICAgICAgICAgIEJSTDogJ1IkJyxcbiAgICAgICAgICBDTFA6ICdDTFAnLFxuICAgICAgICAgIE1YTjogJ01YTicsXG4gICAgICAgICAgVVNEOiAnJCdcbiAgICAgICAgfVtzZXR0aW5ncz8uY3VycmVuY3k/LmNvZGUgfHwgJ0JSTCddO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5wZXJjZW50KSB7XG4gICAgICB0aGlzLl9zeW1ib2wgPSAnJSc7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgeyBzZXR0aW5nc1NlcnZpY2UgfSA9IHRoaXM7XG4gICAgdGhpcy5fb2xkVHlwZSA9IHRoaXMudHlwZTtcbiAgICBzZXR0aW5nc1NlcnZpY2Uuc2V0dGluZ3MoKS5zdWJzY3JpYmUoKHZhbDogTW9ua2V5U3R5bGVTZXR0aW5ncykgPT4ge1xuICAgICAgdGhpcy5zZXR0aW5ncyA9IHZhbDtcbiAgICAgIHRoaXMuaGFuZGxlU3ltYm9sKCk7XG4gICAgfSk7XG4gIH1cblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5fZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICB9XG5cbiAgQElucHV0KClcbiAgc2V0IHZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLmhhbmRsZWRWYWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuX2Zvcm1hdGVkVmFsdWUgPSB0aGlzLmZvcm1hdFZhbHVlKHZhbHVlKTtcbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgdGhpcy5vbk1vZGVsQ2hhbmdlKHRoaXMuaGFuZGxlZFZhbHVlKTtcbiAgICB0aGlzLm9uTW9kZWxUb3VjaGVkKHRoaXMuaGFuZGxlZFZhbHVlKTtcbiAgfVxuXG4gIGdldCB2YWx1ZSgpOiBhbnkge1xuICAgIHJldHVybiB0aGlzLmhhbmRsZWRWYWx1ZTtcbiAgfVxuXG4gIHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgfVxuXG4gIG9uQ2hhbmdlVmFsdWUoZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHZhbHVlID0gdGhpcy5fZm9ybWF0ZWRWYWx1ZTtcbiAgICBldmVudD8ucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudD8uc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgY29uc3QgaGFuZGxlZCA9IHRoaXMuaGFuZGxlVmFsdWUodmFsdWUsIHRydWUpO1xuICAgIHRoaXMud3JpdGVWYWx1ZShoYW5kbGVkKTtcbiAgICB0aGlzLm9uQ2hhbmdlLm5leHQoaGFuZGxlZCk7XG4gIH1cblxuICBvblNob3dBbmRIaWRlUGFzc3dvcmQoKSB7XG4gICAgdGhpcy50eXBlID0gdGhpcy50eXBlID09PSAncGFzc3dvcmQnID8gJ3RleHQnIDogJ3Bhc3N3b3JkJztcbiAgfVxuXG4gIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJylcbiAgb25DbGljaygpIHtcbiAgICBkb2N1bWVudD8uZ2V0RWxlbWVudEJ5SWQodGhpcy5faWQpPy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW5wdXQnKT8uWzBdPy5mb2N1cygpO1xuICB9XG5cbiAgb25LZXlQcmVzcyhldmVudDogYW55KSB7XG4gICAgbGV0IHBhdHRlcm4gPSBudWxsO1xuICAgIGNvbnN0IGNtcCA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlO1xuICAgIGNvbnN0IGlucHV0Q2hhciA9IFN0cmluZy5mcm9tQ2hhckNvZGUoZXZlbnQuY2hhckNvZGUpO1xuICAgIGlmICh0aGlzLmN1cnJlbmN5IHx8IHRoaXMub25seU51bWJlciB8fCB0aGlzLnBlcmNlbnQpIHtcbiAgICAgIHBhdHRlcm4gPSAvWzAtOV0vO1xuICAgICAgaWYgKCF0aGlzLm9ubHlOdW1iZXIgJiYgaW5wdXRDaGFyID09PSAnMCcgJiYgIXRoaXMucmVwbGFjZVplcm8oY21wKSkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLm9ubHlBbHBoYU51bWVyaWMpIHtcbiAgICAgIHBhdHRlcm4gPSAvW14wLTlBLVphLXpdLztcbiAgICB9XG5cbiAgICBpZiAocGF0dGVybiAmJiAhcGF0dGVybi50ZXN0KGlucHV0Q2hhcikpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG59XG4iXX0=
421
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbW9ua2V5LXN0eWxlLWd1aWRlL3NyYy9saWIvY29tcG9uZW50cy9pbnB1dC9pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7NEJBSTRCO0FBQzVCLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQ0wsU0FBUyxFQUNULGlCQUFpQixFQUNqQixLQUFLLEVBQ0wsVUFBVSxFQUNWLFlBQVksRUFHWixNQUFNLEVBQ04sWUFBWSxFQUNaLFNBQVMsRUFFVCxNQUFNLEVBQ04scUJBQXFCLEdBRXRCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDL0MsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7Ozs7Ozs7QUFFbEMsTUFBTSxNQUFNLEdBQVEsT0FBTyxDQUFDO0FBaUc1QixNQUFNLE9BQU8sb0JBQW9CO0lBeUQvQixZQUNVLFlBQTBCLEVBQzFCLGVBQWdELEVBQ2hELEdBQXNCLEVBQ1Msa0JBQTBDO1FBSHpFLGlCQUFZLEdBQVosWUFBWSxDQUFjO1FBQzFCLG9CQUFlLEdBQWYsZUFBZSxDQUFpQztRQUNoRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUNTLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBd0I7UUE1RDFFLFNBQUksR0FBVyxjQUFjLFdBQVcsQ0FBQyxlQUFlLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUUvRCxrQkFBYSxHQUFXLEVBQUUsQ0FBQztRQUMzQixnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQU96QixjQUFTLEdBQVcsR0FBRyxDQUFDO1FBMkJ2QixhQUFRLEdBQUcsSUFBSSxZQUFZ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Q0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ08sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxRQUFRO3NCQUFwQixLQUFLO2dCQVVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBaUJQLFdBQVc7c0JBSFYsU0FBUzt1QkFBQyxhQUFhLEVBQUU7d0JBQ3hCLE1BQU0sRUFBRSxJQUFJO3FCQUNiO2dCQTZGRyxLQUFLO3NCQURSLEtBQUs7Z0JBK0JOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqKioqKioqKioqKioqKioqKioqKioqKioqXG4gKiBDb3B5cmlnaHQgTW9ua2V5IEV4Y2hhbmdlLiBBbGwgUmlnaHRzIFJlc2VydmVkXG4gKiBUaGlzIHN0eWxlIGd1aWRlIHdhcyBkZXZlbG9wZWQgYnkgTW9ua2V5IEV4Y2hhbmdlIFRlYW1cbiAqIE1JVCBMaWNlbmNlXG4gKioqKioqKioqKioqKioqKioqKioqKioqKiovXG5pbXBvcnQgeyBDdXJyZW5jeVBpcGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgVmlld0NoaWxkLFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgSW5qZWN0LFxuICBERUZBVUxUX0NVUlJFTkNZX0NPREUsXG4gIEluamVjdGlvblRva2VuLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1vbmtleVN0eWxlR3VpZGVTZXR0aW5nc1NlcnZpY2UsIE1vbmtleVN0eWxlU2V0dGluZ3MgfSBmcm9tICcuLi8uLi9jb3JlJztcbmltcG9ydCB7IE1vbmtleVV0aWxzIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgKiBhcyBtb21lbnRfIGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IG1vbWVudDogYW55ID0gbW9tZW50XztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbW9ua2V5LWlucHV0JyxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bWVjeC1mb3JtLWZpZWxkIFtuZ0NsYXNzXT1cInsgZGlzYWJsZWQ6IF9kaXNhYmxlZCB9XCIgW2lkXT1cIl9pZFwiPlxuICAgICAgPG1lY3gtZm9ybS1maWVsZC1oZWFkZXI+XG4gICAgICAgIDxsYWJlbD5cbiAgICAgICAgICB7eyBsYWJlbCB9fVxuICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8aGVscGVyPlxuICAgICAgICAgIHt7IGhlbHBlck1lc3NhZ2UgfX1cbiAgICAgICAgPC9oZWxwZXI+XG4gICAgICA8L21lY3gtZm9ybS1maWVsZC1oZWFkZXI+XG4gICAgICA8bWVjeC1mb3JtLWZpZWxkLWJvZHkgW2NsYXNzLmVycm9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpXCI+XG4gICAgICAgIDxtb25rZXktaWNvblxuICAgICAgICAgIFtpY29uXT1cImljb25cIlxuICAgICAgICAgIFtjb2xvcl09XCJlcnJvck1lc3NhZ2U/LnRyaW0oKSA/ICcjZmEzODM4JyA6ICcjNEI0QTUzJ1wiXG4gICAgICAgICAgKm5nSWY9XCJpY29uXCJcbiAgICAgICAgPjwvbW9ua2V5LWljb24+XG4gICAgICAgIDxzeW1ib2w+XG4gICAgICAgICAge3sgX3N5bWJvbCB9fVxuICAgICAgICA8L3N5bWJvbD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgW25hbWVdPVwibmFtZVwiXG4gICAgICAgICAgW3R5cGVdPVwidHlwZVwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICAgICAgICAoaW5wdXQpPVwib25DaGFuZ2VWYWx1ZSgkZXZlbnQpXCJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICBbaWRdPVwibmFtZVwiXG4gICAgICAgICAgWyhuZ01vZGVsKV09XCJfZm9ybWF0ZWRWYWx1ZVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIl9kaXNhYmxlZFwiXG4gICAgICAgICAgW21hc2tdPVwibWFza1wiXG4gICAgICAgICAgW3ByZWZpeF09XCJwcmVmaXhcIlxuICAgICAgICAgICpuZ0lmPVwibWFzayAmJiBwcmVmaXhcIlxuICAgICAgICAgICNtb25rZXlJbnB1dFxuICAgICAgICAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBbbmFtZV09XCJuYW1lXCJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwicGxhY2Vob2xkZXJcIlxuICAgICAgICAgIChpbnB1dCk9XCJvbkNoYW5nZVZhbHVlKCRldmVudClcIlxuICAgICAgICAgIFtpZF09XCJuYW1lXCJcbiAgICAgICAgICBbKG5nTW9kZWwpXT1cIl9mb3JtYXRlZFZhbHVlXCJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwib25LZXlQcmVzcygkZXZlbnQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiX2Rpc2FibGVkXCJcbiAgICAgICAgICBbbWFza109XCJtYXNrXCJcbiAgICAgICAgICAqbmdJZj1cIm1hc2sgJiYgIXByZWZpeFwiXG4gICAgICAgICAgI21vbmtleUlucHV0XG4gICAgICAgIC8+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIFtuYW1lXT1cIm5hbWVcIlxuICAgICAgICAgIFt0eXBlXT1cInR5cGVcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiXG4gICAgICAgICAgKGlucHV0KT1cIm9uQ2hhbmdlVmFsdWUoJGV2ZW50KVwiXG4gICAgICAgICAgW2lkXT1cIm5hbWVcIlxuICAgICAgICAgIFsobmdNb2RlbCldPVwiX2Zvcm1hdGVkVmFsdWVcIlxuICAgICAgICAgIChrZXlwcmVzcyk9XCJvbktleVByZXNzKCRldmVudClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJfZGlzYWJsZWRcIlxuICAgICAgICAgIFttYXhMZW5ndGhdPVwibWF4TGVuZ3RoXCJcbiAgICAgICAgICAqbmdJZj1cIiFtYXNrICYmICFwcmVmaXhcIlxuICAgICAgICAgIFttYXhdPVwiX21heERhdGVcIlxuICAgICAgICAgICNtb25rZXlJbnB1dFxuICAgICAgICAvPlxuICAgICAgICA8bW9ua2V5LWljb25cbiAgICAgICAgICBpY29uPVwiZXllLW9wZW4tMTZcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcnJvck1lc3NhZ2U/LnRyaW0oKSA/ICcjZmEzODM4JyA6ICcjNEI0QTUzJ1wiXG4gICAgICAgICAgKm5nSWY9XCJfb2xkVHlwZSA9PT0gJ3Bhc3N3b3JkJyAmJiB0eXBlID09PSAndGV4dCdcIlxuICAgICAgICAgIChjbGljayk9XCJvblNob3dBbmRIaWRlUGFzc3dvcmQoKVwiXG4gICAgICAgID48L21vbmtleS1pY29uPlxuICAgICAgICA8bW9ua2V5LWljb25cbiAgICAgICAgICBpY29uPVwiZXllLWNsb3NlZC0xNlwiXG4gICAgICAgICAgW2NvbG9yXT1cImVycm9yTWVzc2FnZT8udHJpbSgpID8gJyNmYTM4MzgnIDogJyM0QjRBNTMnXCJcbiAgICAgICAgICAqbmdJZj1cIl9vbGRUeXBlID09PSAncGFzc3dvcmQnICYmIHR5cGUgPT09ICdwYXNzd29yZCdcIlxuICAgICAgICAgIChjbGljayk9XCJvblNob3dBbmRIaWRlUGFzc3dvcmQoKVwiXG4gICAgICAgID48L21vbmtleS1pY29uPlxuICAgICAgPC9tZWN4LWZvcm0tZmllbGQtYm9keT5cbiAgICAgIDxtZWN4LWZvcm0tZmllbGQtZm9vdGVyPlxuICAgICAgICA8aW5mbz5cbiAgICAgICAgICB7eyBpbmZvTWVzc2FnZSB9fVxuICAgICAgICA8L2luZm8+XG4gICAgICAgIDxlcnJvcj5cbiAgICAgICAgICB7eyBlcnJvck1lc3NhZ2UgfX1cbiAgICAgICAgPC9lcnJvcj5cbiAgICAgIDwvbWVjeC1mb3JtLWZpZWxkLWZvb3Rlcj5cbiAgICA8L21lY3gtZm9ybS1maWVsZD5cbiAgYCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogZm9yd2FyZFJlZigoKSA9PiBNb25rZXlJbnB1dENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZSxcbiAgICB9LFxuICAgIEN1cnJlbmN5UGlwZSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTW9ua2V5SW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25Jbml0IHtcbiAgQElucHV0KCkgbmFtZTogc3RyaW5nID0gYG1lY3gtaW5wdXQtJHtNb25rZXlVdGlscy5nZXRSYW5kb21TdHJpbmcoMTApfWA7XG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGhlbHBlck1lc3NhZ2U6IHN0cmluZyA9ICcnO1xuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XG4gIEBJbnB1dCgpIGljb246IHN0cmluZztcbiAgQElucHV0KCkgdHlwZTogc3RyaW5nO1xuICBASW5wdXQoKSBpbmZvTWVzc2FnZTogc3RyaW5nO1xuICBASW5wdXQoKSBlcnJvck1lc3NhZ2U6IHN0cmluZztcbiAgQElucHV0KCkgbWFzazogc3RyaW5nO1xuICBASW5wdXQoKSBwcmVmaXg6IHN0cmluZztcbiAgQElucHV0KCkgbWF4TGVuZ3RoOiBudW1iZXIgPSAyNTU7XG4gIEBJbnB1dCgpIG9ubHlOdW1iZXI6IGFueTtcbiAgQElucHV0KCkgb25seUFscGhhTnVtZXJpYzogYW55O1xuICBASW5wdXQoKSB1cHBlckNhc2U6IGFueTtcbiAgQElucHV0KCkgbG93ZXJDYXNlOiBhbnk7XG4gIEBJbnB1dCgpIGNhcGl0YWxpemU6IGFueTtcbiAgQElucHV0KCkgY3VycmVuY3k6IGFueTtcbiAgQElucHV0KCkgcGVyY2VudDogYW55O1xuICBASW5wdXQoKSBzZXQgbWF4RGF0ZVRvZGF5KHZhbHVlOiBib29sZWFuKSB7XG4gICAgdHJ5e1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX21heERhdGUgPSBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCkuc3BsaXQoJ1QnKVswXTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cbiAgQElucHV0KCkgc2V0IG1pblllYXJzKHZhbHVlOiBudW1iZXIgfCBudWxsKSB7XG4gICAgdHJ5e1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIHRoaXMuX21heERhdGUgPSBtb21lbnQuZGVmYXVsdCgpLnN1YnRyYWN0KHZhbHVlLCAneWVhcnMnKS50b0lTT1N0cmluZygpLnNwbGl0KCdUJylbMF07XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9XG4gIH1cbiAgQE91dHB1dCgpIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgcHJpdmF0ZSBzZXR0aW5nczogTW9ua2V5U3R5bGVTZXR0aW5ncztcbiAgcHJpdmF0ZSBoYW5kbGVkVmFsdWU6IGFueTtcbiAgcHJpdmF0ZSBvbk1vZGVsQ2hhbmdlID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuICBwcml2YXRlIG9uTW9kZWxUb3VjaGVkID0gKHZhbHVlOiBhbnkpID0+IHt9O1xuXG4gIHB1YmxpYyBfaWQ6IHN0cmluZyA9IGBtZWN4LWlucHV0LSR7TW9ua2V5VXRpbHMuZ2V0UmFuZG9tU3RyaW5nKDEwKX1gO1xuICBwdWJsaWMgX2Rpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBfb2xkVHlwZTogc3RyaW5nO1xuICBwdWJsaWMgX2Zvcm1hdGVkVmFsdWU6IGFueTtcbiAgcHVibGljIF9zeW1ib2wgPSAnJztcbiAgcHVibGljIF9tYXhEYXRlID0gdW5kZWZpbmVkO1xuXG4gIEBWaWV3Q2hpbGQoJ21vbmtleUlucHV0Jywge1xuICAgIHN0YXRpYzogdHJ1ZSxcbiAgfSlcbiAgbW9ua2V5SW5wdXQ6IEVsZW1lbnRSZWY7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjdXJyZW5jeVBpcGU6IEN1cnJlbmN5UGlwZSxcbiAgICBwcml2YXRlIHNldHRpbmdzU2VydmljZTogTW9ua2V5U3R5bGVHdWlkZVNldHRpbmdzU2VydmljZSxcbiAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQEluamVjdChERUZBVUxUX0NVUlJFTkNZX0NPREUpIHByaXZhdGUgZGVmYXVsdEN1cmVuY3lDb2RlOiBJbmplY3Rpb25Ub2tlbjxzdHJpbmc+LFxuICApIHtcbiAgICAvL25vdCB0byBkb1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVWYWx1ZSh2YWx1ZTogYW55LCBhcHBseSA9IGZhbHNlKTogYW55IHtcbiAgICBpZiAodGhpcy5vbmx5TnVtYmVyKSB7XG4gICAgICByZXR1cm4gTW9ua2V5VXRpbHMuaGFuZGxlT25seU51bWJlcnMoYCR7dmFsdWV9YCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLm9ubHlBbHBoYU51bWVyaWMpIHJldHVybiBNb25rZXlVdGlscy5oYW5kbGVPbmx5QWxwaGFOdW1lcmljKGAke3ZhbHVlfWApO1xuICAgIGVsc2UgaWYgKHRoaXMudXBwZXJDYXNlKSByZXR1cm4gYCR7dmFsdWV9YC50b1VwcGVyQ2FzZSgpO1xuICAgIGVsc2UgaWYgKHRoaXMubG93ZXJDYXNlKSByZXR1cm4gYCR7dmFsdWV9YC50b0xvd2VyQ2FzZSgpO1xuICAgIGVsc2UgaWYgKHRoaXMuY2FwaXRhbGl6ZSkgcmV0dXJuIE1vbmtleVV0aWxzLmNhcGl0YWxpemUoYCR7dmFsdWV9YC50b1VwcGVyQ2FzZSgpKTtcbiAgICBlbHNlIGlmICh0aGlzLmN1cnJlbmN5IHx8IHRoaXMucGVyY2VudCkge1xuICAgICAgY29uc3QgaGFuZGxlZCA9IE1vbmtleVV0aWxzLmhhbmRsZU9ubHlOdW1iZXJzKGAke3ZhbHVlfWApO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaGFuZGxlZCAvIDEwMDtcbiAgICAgIGlmKCFyZXN1bHQpIHJldHVybiAnJztcbiAgICAgIHJldHVybiByZXN1bHQudG9GaXhlZCgyKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlcGxhY2VaZXJvKHZhbHVlOiBhbnkpIHtcbiAgICByZXR1cm4gYCR7dmFsdWV9YC5yZXBsYWNlKG5ldyBSZWdFeHAoLzAvLCAnZycpLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnkpOiBhbnkge1xuICAgIGNvbnN0IHsgc2V0dGluZ3MgfSA9IHRoaXM7XG4gICAgaWYgKHRoaXMuY3VycmVuY3kpIHtcbiAgICAgIGlmICghdmFsdWUgfHwgIXRoaXMucmVwbGFjZVplcm8odmFsdWUpKSByZXR1cm4gJyc7XG4gICAgICByZXR1cm4gdGhpcy5jdXJyZW5jeVBpcGUudHJhbnNmb3JtKFxuICAgICAgICB2YWx1ZSxcbiAgICAgICAgc2V0dGluZ3M/LmN1cnJlbmN5Py5jb2RlIHx8ICdCUkwnLFxuICAgICAgICAnJyxcbiAgICAgICAgJzEuMi0yJyxcbiAgICAgICAgc2V0dGluZ3M/LmN1cnJlbmN5Py5sb2NhbGUgfHwgJ3B0LUJSJ1xuICAgICAgKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucGVyY2VudCkge1xuICAgICAgcmV0dXJuIGAke3ZhbHVlfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTeW1ib2woKSB7XG4gICAgY29uc3QgeyBzZXR0aW5ncywgZGVmYXVsdEN1cmVuY3lDb2RlIH0gPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuY3VycmVuY3kpIHtcbiAgICAgIGlmKGRlZmF1bHRDdXJlbmN5Q29kZSl7XG4gICAgICAgIGNvbnN0IGN1ciA9IHRoaXMuZGVmYXVsdEN1cmVuY3lDb2RlLnRvU3RyaW5nKCk7XG4gICAgICAgIHRoaXMuX3N5bWJvbCA9IGN1cjtcbiAgICAgIH1lbHNle1xuICAgICAgICB0aGlzLl9zeW1ib2wgPSB7XG4gICAgICAgICAgQlJMOiAnUiQnLFxuICAgICAgICAgIENMUDogJ0NMUCcsXG4gICAgICAgICAgTVhOOiAnTVhOJyxcbiAgICAgICAgICBVU0Q6ICckJ1xuICAgICAgICB9W3NldHRpbmdzPy5jdXJyZW5jeT8uY29kZSB8fCAnQlJMJ107XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0aGlzLnBlcmNlbnQpIHtcbiAgICAgIHRoaXMuX3N5bWJvbCA9ICclJztcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBjb25zdCB7IHNldHRpbmdzU2VydmljZSB9ID0gdGhpcztcbiAgICB0aGlzLl9vbGRUeXBlID0gdGhpcy50eXBlO1xuICAgIHNldHRpbmdzU2VydmljZS5zZXR0aW5ncygpLnN1YnNjcmliZSgodmFsOiBNb25rZXlTdHlsZVNldHRpbmdzKSA9PiB7XG4gICAgICB0aGlzLnNldHRpbmdzID0gdmFsO1xuICAgICAgdGhpcy5oYW5kbGVTeW1ib2woKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbENoYW5nZSA9IGZuO1xuICB9XG5cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSk6IHZvaWQge1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQgPSBmbjtcbiAgfVxuXG4gIHNldERpc2FibGVkU3RhdGU/KGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLl9kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBASW5wdXQoKVxuICBzZXQgdmFsdWUodmFsdWU6IGFueSkge1xuICAgIHRoaXMuaGFuZGxlZFZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5fZm9ybWF0ZWRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUodmFsdWUpO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLm9uTW9kZWxDaGFuZ2UodGhpcy5oYW5kbGVkVmFsdWUpO1xuICAgIHRoaXMub25Nb2RlbFRvdWNoZWQodGhpcy5oYW5kbGVkVmFsdWUpO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuaGFuZGxlZFZhbHVlO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgb25DaGFuZ2VWYWx1ZShldmVudDogYW55KSB7XG4gICAgY29uc3QgdmFsdWUgPSB0aGlzLl9mb3JtYXRlZFZhbHVlO1xuICAgIGV2ZW50Py5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50Py5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBjb25zdCBoYW5kbGVkID0gdGhpcy5oYW5kbGVWYWx1ZSh2YWx1ZSwgdHJ1ZSk7XG4gICAgdGhpcy53cml0ZVZhbHVlKGhhbmRsZWQpO1xuICAgIHRoaXMub25DaGFuZ2UubmV4dChoYW5kbGVkKTtcbiAgfVxuXG4gIG9uU2hvd0FuZEhpZGVQYXNzd29yZCgpIHtcbiAgICB0aGlzLnR5cGUgPSB0aGlzLnR5cGUgPT09ICdwYXNzd29yZCcgPyAndGV4dCcgOiAncGFzc3dvcmQnO1xuICB9XG5cbiAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICBvbkNsaWNrKCkge1xuICAgIGRvY3VtZW50Py5nZXRFbGVtZW50QnlJZCh0aGlzLl9pZCk/LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdpbnB1dCcpPy5bMF0/LmZvY3VzKCk7XG4gIH1cblxuICBvbktleVByZXNzKGV2ZW50OiBhbnkpIHtcbiAgICBsZXQgcGF0dGVybiA9IG51bGw7XG4gICAgY29uc3QgY21wID0gZXZlbnQ/LnRhcmdldD8udmFsdWU7XG4gICAgY29uc3QgaW5wdXRDaGFyID0gU3RyaW5nLmZyb21DaGFyQ29kZShldmVudC5jaGFyQ29kZSk7XG4gICAgaWYgKHRoaXMuY3VycmVuY3kgfHwgdGhpcy5vbmx5TnVtYmVyIHx8IHRoaXMucGVyY2VudCkge1xuICAgICAgcGF0dGVybiA9IC9bMC05XS87XG4gICAgICBpZiAoIXRoaXMub25seU51bWJlciAmJiBpbnB1dENoYXIgPT09ICcwJyAmJiAhdGhpcy5yZXBsYWNlWmVybyhjbXApKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub25seUFscGhhTnVtZXJpYykge1xuICAgICAgcGF0dGVybiA9IC9bXjAtOUEtWmEtel0vO1xuICAgIH1cblxuICAgIGlmIChwYXR0ZXJuICYmICFwYXR0ZXJuLnRlc3QoaW5wdXRDaGFyKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -5305,7 +5305,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5305
5305
  * This style guide was developed by Monkey Exchange Team
5306
5306
  * MIT Licence
5307
5307
  **************************/
5308
- const moment$1 = moment_;
5308
+ const moment$2 = moment_;
5309
5309
  class MonkeyDateRangePickerComponent {
5310
5310
  constructor(fb, cdr) {
5311
5311
  this.fb = fb;
@@ -5313,11 +5313,11 @@ class MonkeyDateRangePickerComponent {
5313
5313
  this.helperMessage = '';
5314
5314
  this.moveDaysForward = true;
5315
5315
  this.onChange = new EventEmitter();
5316
- this.today = moment$1.default().format('YYYY-MM-DD');
5316
+ this.today = moment$2.default().format('YYYY-MM-DD');
5317
5317
  this.onModelChange = (value) => { };
5318
5318
  this.onModelTouched = (value) => { };
5319
- this._dateFirst = moment$1.default();
5320
- this._dateSecond = moment$1.default().add(1, 'M');
5319
+ this._dateFirst = moment$2.default();
5320
+ this._dateSecond = moment$2.default().add(1, 'M');
5321
5321
  this._id = `mecx-date-range-picker-${MonkeyUtils.getRandomString(10)}`;
5322
5322
  this._daysArrFirst = [];
5323
5323
  this._daysArrSecond = [];
@@ -5339,17 +5339,17 @@ class MonkeyDateRangePickerComponent {
5339
5339
  });
5340
5340
  (_c = (_b = (_a = this._dateForm) === null || _a === void 0 ? void 0 : _a.valueChanges) === null || _b === void 0 ? void 0 : _b.pipe(takeUntil(this.unsubscribeAll))) === null || _c === void 0 ? void 0 : _c.subscribe((values) => {
5341
5341
  const { startDate, endDate } = values;
5342
- this._startDate = startDate && moment$1.default(startDate);
5343
- this._endDate = endDate && moment$1.default(endDate);
5342
+ this._startDate = startDate && moment$2.default(startDate);
5343
+ this._endDate = endDate && moment$2.default(endDate);
5344
5344
  });
5345
5345
  }
5346
5346
  createCalendar(month) {
5347
- let firstDay = moment$1.default(month).startOf('M');
5348
- let lastDay = moment$1.default(month).endOf('M');
5347
+ let firstDay = moment$2.default(month).startOf('M');
5348
+ let lastDay = moment$2.default(month).endOf('M');
5349
5349
  let days = Array.apply(null, { length: month.daysInMonth() })
5350
5350
  .map(Number.call, Number)
5351
5351
  .map((n) => {
5352
- return moment$1.default(firstDay).add(n, 'd');
5352
+ return moment$2.default(firstDay).add(n, 'd');
5353
5353
  });
5354
5354
  let n = 0;
5355
5355
  while (n < firstDay.weekday()) {
@@ -5387,8 +5387,8 @@ class MonkeyDateRangePickerComponent {
5387
5387
  this.writeValue(this._dateForm.value);
5388
5388
  }
5389
5389
  navigateToToday() {
5390
- this._dateFirst = moment$1.default();
5391
- this._dateSecond = moment$1.default().add(1, 'M');
5390
+ this._dateFirst = moment$2.default();
5391
+ this._dateSecond = moment$2.default().add(1, 'M');
5392
5392
  this.build();
5393
5393
  }
5394
5394
  ngOnInit() {
@@ -5443,14 +5443,14 @@ class MonkeyDateRangePickerComponent {
5443
5443
  if (!day) {
5444
5444
  return false;
5445
5445
  }
5446
- return moment$1.default().format('L') === day.format('L');
5446
+ return moment$2.default().format('L') === day.format('L');
5447
5447
  }
5448
5448
  isSelected(day) {
5449
5449
  if (!day) {
5450
5450
  return false;
5451
5451
  }
5452
- let startDateMoment = moment$1.default(this._dateForm.value.startDate, 'YYYY-MM-DD');
5453
- let endDateMoment = moment$1.default(this._dateForm.value.endDate, 'YYYY-MM-DD');
5452
+ let startDateMoment = moment$2.default(this._dateForm.value.startDate, 'YYYY-MM-DD');
5453
+ let endDateMoment = moment$2.default(this._dateForm.value.endDate, 'YYYY-MM-DD');
5454
5454
  if (this._dateForm.valid) {
5455
5455
  return startDateMoment.isSameOrBefore(day) && endDateMoment.isSameOrAfter(day);
5456
5456
  }
@@ -5461,7 +5461,7 @@ class MonkeyDateRangePickerComponent {
5461
5461
  isDisabled(day) {
5462
5462
  const { _minDate } = this;
5463
5463
  if (_minDate) {
5464
- const firstDay = moment$1.default(_minDate);
5464
+ const firstDay = moment$2.default(_minDate);
5465
5465
  return day.isBefore(firstDay.subtract(1, 'day'));
5466
5466
  }
5467
5467
  return false;
@@ -5482,7 +5482,7 @@ class MonkeyDateRangePickerComponent {
5482
5482
  const { _dateForm, _minDate } = this;
5483
5483
  let dayFormatted = day.format('YYYY-MM-DD');
5484
5484
  if (_minDate) {
5485
- const firstDay = moment$1.default(_minDate);
5485
+ const firstDay = moment$2.default(_minDate);
5486
5486
  if (day.isBefore(firstDay.subtract(1, 'day')))
5487
5487
  return;
5488
5488
  }
@@ -5491,7 +5491,7 @@ class MonkeyDateRangePickerComponent {
5491
5491
  }
5492
5492
  let { startDate, endDate } = _dateForm.value;
5493
5493
  if (startDate) {
5494
- if (moment$1.default(startDate).isAfter(moment$1.default(dayFormatted))) {
5494
+ if (moment$2.default(startDate).isAfter(moment$2.default(dayFormatted))) {
5495
5495
  endDate = startDate;
5496
5496
  startDate = dayFormatted;
5497
5497
  }
@@ -5514,9 +5514,9 @@ class MonkeyDateRangePickerComponent {
5514
5514
  return;
5515
5515
  const { _dateForm, _minDate, today, moveDaysForward } = this;
5516
5516
  const { startDate } = _dateForm.value;
5517
- const firstDay = moment$1.default(startDate || _minDate || today).format('YYYY-MM-DD');
5517
+ const firstDay = moment$2.default(startDate || _minDate || today).format('YYYY-MM-DD');
5518
5518
  const method = moveDaysForward ? 'add' : 'subtract';
5519
- const lastDay = moment$1.default(firstDay)[method](days, 'day').format('YYYY-MM-DD');
5519
+ const lastDay = moment$2.default(firstDay)[method](days, 'day').format('YYYY-MM-DD');
5520
5520
  if (moveDaysForward) {
5521
5521
  _dateForm.get('startDate').patchValue(firstDay);
5522
5522
  _dateForm.get('endDate').patchValue(lastDay);
@@ -5970,7 +5970,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
5970
5970
  * This style guide was developed by Monkey Exchange Team
5971
5971
  * MIT Licence
5972
5972
  **************************/
5973
- const moment = moment_;
5973
+ const moment$1 = moment_;
5974
5974
  class MonkeyDateRangePickerV2Component {
5975
5975
  constructor(fb, cdr) {
5976
5976
  this.fb = fb;
@@ -5981,11 +5981,11 @@ class MonkeyDateRangePickerV2Component {
5981
5981
  this.onChange = new EventEmitter();
5982
5982
  this.onSubmit = new EventEmitter();
5983
5983
  this.onClose = new EventEmitter();
5984
- this.today = moment.default().format('YYYY-MM-DD');
5984
+ this.today = moment$1.default().format('YYYY-MM-DD');
5985
5985
  this.onModelChange = (value) => { };
5986
5986
  this.onModelTouched = (value) => { };
5987
- this._dateFirst = moment.default();
5988
- this._dateSecond = moment.default().add(1, 'M');
5987
+ this._dateFirst = moment$1.default();
5988
+ this._dateSecond = moment$1.default().add(1, 'M');
5989
5989
  this._id = `mecx-date-range-picker-v2-${MonkeyUtils.getRandomString(10)}`;
5990
5990
  this._daysArrFirst = [];
5991
5991
  this._daysArrSecond = [];
@@ -6007,17 +6007,17 @@ class MonkeyDateRangePickerV2Component {
6007
6007
  });
6008
6008
  (_c = (_b = (_a = this._dateForm) === null || _a === void 0 ? void 0 : _a.valueChanges) === null || _b === void 0 ? void 0 : _b.pipe(takeUntil(this.unsubscribeAll))) === null || _c === void 0 ? void 0 : _c.subscribe((values) => {
6009
6009
  const { startDate, endDate } = values;
6010
- this._startDate = startDate && moment.default(startDate);
6011
- this._endDate = endDate && moment.default(endDate);
6010
+ this._startDate = startDate && moment$1.default(startDate);
6011
+ this._endDate = endDate && moment$1.default(endDate);
6012
6012
  });
6013
6013
  }
6014
6014
  createCalendar(month) {
6015
- let firstDay = moment.default(month).startOf('M');
6016
- let lastDay = moment.default(month).endOf('M');
6015
+ let firstDay = moment$1.default(month).startOf('M');
6016
+ let lastDay = moment$1.default(month).endOf('M');
6017
6017
  let days = Array.apply(null, { length: month.daysInMonth() })
6018
6018
  .map(Number.call, Number)
6019
6019
  .map((n) => {
6020
- return moment.default(firstDay).add(n, 'd');
6020
+ return moment$1.default(firstDay).add(n, 'd');
6021
6021
  });
6022
6022
  let n = 0;
6023
6023
  while (n < firstDay.weekday()) {
@@ -6055,8 +6055,8 @@ class MonkeyDateRangePickerV2Component {
6055
6055
  this.writeValue(this._dateForm.value);
6056
6056
  }
6057
6057
  navigateToToday() {
6058
- this._dateFirst = moment.default();
6059
- this._dateSecond = moment.default().add(1, 'M');
6058
+ this._dateFirst = moment$1.default();
6059
+ this._dateSecond = moment$1.default().add(1, 'M');
6060
6060
  this.build();
6061
6061
  }
6062
6062
  ngOnInit() {
@@ -6115,14 +6115,14 @@ class MonkeyDateRangePickerV2Component {
6115
6115
  if (!day) {
6116
6116
  return false;
6117
6117
  }
6118
- return moment.default().format('L') === day.format('L');
6118
+ return moment$1.default().format('L') === day.format('L');
6119
6119
  }
6120
6120
  isSelected(day) {
6121
6121
  if (!day) {
6122
6122
  return false;
6123
6123
  }
6124
- let startDateMoment = moment.default(this._dateForm.value.startDate, 'YYYY-MM-DD');
6125
- let endDateMoment = moment.default(this._dateForm.value.endDate, 'YYYY-MM-DD');
6124
+ let startDateMoment = moment$1.default(this._dateForm.value.startDate, 'YYYY-MM-DD');
6125
+ let endDateMoment = moment$1.default(this._dateForm.value.endDate, 'YYYY-MM-DD');
6126
6126
  if (this._dateForm.valid) {
6127
6127
  return startDateMoment.isSameOrBefore(day) && endDateMoment.isSameOrAfter(day);
6128
6128
  }
@@ -6133,7 +6133,7 @@ class MonkeyDateRangePickerV2Component {
6133
6133
  isDisabled(day) {
6134
6134
  const { _minDate } = this;
6135
6135
  if (_minDate) {
6136
- const firstDay = moment.default(_minDate);
6136
+ const firstDay = moment$1.default(_minDate);
6137
6137
  return day.isBefore(firstDay.subtract(1, 'day'));
6138
6138
  }
6139
6139
  return false;
@@ -6154,7 +6154,7 @@ class MonkeyDateRangePickerV2Component {
6154
6154
  const { _dateForm, _minDate } = this;
6155
6155
  let dayFormatted = day.format('YYYY-MM-DD');
6156
6156
  if (_minDate) {
6157
- const firstDay = moment.default(_minDate);
6157
+ const firstDay = moment$1.default(_minDate);
6158
6158
  if (day.isBefore(firstDay.subtract(1, 'day')))
6159
6159
  return;
6160
6160
  }
@@ -6163,7 +6163,7 @@ class MonkeyDateRangePickerV2Component {
6163
6163
  }
6164
6164
  let { startDate, endDate } = _dateForm.value;
6165
6165
  if (startDate) {
6166
- if (moment.default(startDate).isAfter(moment.default(dayFormatted))) {
6166
+ if (moment$1.default(startDate).isAfter(moment$1.default(dayFormatted))) {
6167
6167
  endDate = startDate;
6168
6168
  startDate = dayFormatted;
6169
6169
  }
@@ -6186,9 +6186,9 @@ class MonkeyDateRangePickerV2Component {
6186
6186
  return;
6187
6187
  const { _dateForm, _minDate, today, moveDaysForward } = this;
6188
6188
  const { startDate } = _dateForm.value;
6189
- const firstDay = moment.default(startDate || _minDate || today).format('YYYY-MM-DD');
6189
+ const firstDay = moment$1.default(startDate || _minDate || today).format('YYYY-MM-DD');
6190
6190
  const method = moveDaysForward ? 'add' : 'subtract';
6191
- const lastDay = moment.default(firstDay)[method](days, 'day').format('YYYY-MM-DD');
6191
+ const lastDay = moment$1.default(firstDay)[method](days, 'day').format('YYYY-MM-DD');
6192
6192
  if (moveDaysForward) {
6193
6193
  _dateForm.get('startDate').patchValue(firstDay);
6194
6194
  _dateForm.get('endDate').patchValue(lastDay);
@@ -7630,6 +7630,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
7630
7630
  * This style guide was developed by Monkey Exchange Team
7631
7631
  * MIT Licence
7632
7632
  **************************/
7633
+ const moment = moment_;
7633
7634
  class MonkeyInputComponent {
7634
7635
  constructor(currencyPipe, settingsService, cdr, defaultCurencyCode) {
7635
7636
  this.currencyPipe = currencyPipe;
@@ -7640,16 +7641,36 @@ class MonkeyInputComponent {
7640
7641
  this.helperMessage = '';
7641
7642
  this.placeholder = '';
7642
7643
  this.maxLength = 255;
7643
- this.maxDateToday = false;
7644
7644
  this.onChange = new EventEmitter();
7645
7645
  this.onModelChange = (value) => { };
7646
7646
  this.onModelTouched = (value) => { };
7647
7647
  this._id = `mecx-input-${MonkeyUtils.getRandomString(10)}`;
7648
7648
  this._disabled = false;
7649
- this._maxDateToday = new Date().toISOString().split('T')[0];
7650
7649
  this._symbol = '';
7650
+ this._maxDate = undefined;
7651
7651
  //not to do
7652
7652
  }
7653
+ set maxDateToday(value) {
7654
+ try {
7655
+ if (value) {
7656
+ this._maxDate = new Date().toISOString().split('T')[0];
7657
+ }
7658
+ }
7659
+ catch (e) {
7660
+ // ignore
7661
+ }
7662
+ }
7663
+ set minYears(value) {
7664
+ try {
7665
+ if (value) {
7666
+ this._maxDate = moment.default().subtract(value, 'years').toISOString().split('T')[0];
7667
+ }
7668
+ }
7669
+ catch (e) {
7670
+ console.log(e);
7671
+ // ignore
7672
+ }
7673
+ }
7653
7674
  handleValue(value, apply = false) {
7654
7675
  if (this.onlyNumber) {
7655
7676
  return MonkeyUtils.handleOnlyNumbers(`${value}`);
@@ -7774,7 +7795,7 @@ class MonkeyInputComponent {
7774
7795
  }
7775
7796
  }
7776
7797
  MonkeyInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.11", ngImport: i0, type: MonkeyInputComponent, deps: [{ token: i1$1.CurrencyPipe }, { token: MonkeyStyleGuideSettingsService }, { token: i0.ChangeDetectorRef }, { token: DEFAULT_CURRENCY_CODE }], target: i0.ɵɵFactoryTarget.Component });
7777
- MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputComponent, selector: "monkey-input", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", type: "type", infoMessage: "infoMessage", errorMessage: "errorMessage", mask: "mask", prefix: "prefix", maxLength: "maxLength", onlyNumber: "onlyNumber", onlyAlphaNumeric: "onlyAlphaNumeric", upperCase: "upperCase", lowerCase: "lowerCase", capitalize: "capitalize", currency: "currency", percent: "percent", maxDateToday: "maxDateToday", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, providers: [
7798
+ MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.11", type: MonkeyInputComponent, selector: "monkey-input", inputs: { name: "name", label: "label", helperMessage: "helperMessage", placeholder: "placeholder", icon: "icon", type: "type", infoMessage: "infoMessage", errorMessage: "errorMessage", mask: "mask", prefix: "prefix", maxLength: "maxLength", onlyNumber: "onlyNumber", onlyAlphaNumeric: "onlyAlphaNumeric", upperCase: "upperCase", lowerCase: "lowerCase", capitalize: "capitalize", currency: "currency", percent: "percent", maxDateToday: "maxDateToday", minYears: "minYears", value: "value" }, outputs: { onChange: "onChange" }, host: { listeners: { "click": "onClick()" } }, providers: [
7778
7799
  {
7779
7800
  provide: NG_VALUE_ACCESSOR,
7780
7801
  useExisting: forwardRef(() => MonkeyInputComponent),
@@ -7838,7 +7859,7 @@ MonkeyInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", v
7838
7859
  [disabled]="_disabled"
7839
7860
  [maxLength]="maxLength"
7840
7861
  *ngIf="!mask && !prefix"
7841
- [max]="maxDateToday ? _maxDateToday : null"
7862
+ [max]="_maxDate"
7842
7863
  #monkeyInput
7843
7864
  />
7844
7865
  <monkey-icon
@@ -7925,7 +7946,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
7925
7946
  [disabled]="_disabled"
7926
7947
  [maxLength]="maxLength"
7927
7948
  *ngIf="!mask && !prefix"
7928
- [max]="maxDateToday ? _maxDateToday : null"
7949
+ [max]="_maxDate"
7929
7950
  #monkeyInput
7930
7951
  />
7931
7952
  <monkey-icon
@@ -8004,6 +8025,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.11", ngImpo
8004
8025
  type: Input
8005
8026
  }], maxDateToday: [{
8006
8027
  type: Input
8028
+ }], minYears: [{
8029
+ type: Input
8007
8030
  }], onChange: [{
8008
8031
  type: Output
8009
8032
  }], monkeyInput: [{