@wlcm/angular 18.2.26 → 18.2.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (110) hide show
  1. package/button/esm2022/lib/button.module.mjs +4 -4
  2. package/button/esm2022/lib/components/button/button.component.mjs +3 -3
  3. package/button/fesm2022/wlcm-angular-button.mjs +7 -7
  4. package/core/esm2022/lib/components/default-loader/default-loader.component.mjs +3 -3
  5. package/core/esm2022/lib/components/icons/calendar-icon/calendar-icon.component.mjs +3 -3
  6. package/core/esm2022/lib/components/icons/chevron-down-icon/chevron-down-icon.component.mjs +3 -3
  7. package/core/esm2022/lib/components/icons/close-icon/close-icon.component.mjs +3 -3
  8. package/core/esm2022/lib/components/icons/search-icon/search-icon.component.mjs +3 -3
  9. package/core/esm2022/lib/components/loader/loader.component.mjs +3 -3
  10. package/core/esm2022/lib/directives/icon.directive.mjs +3 -3
  11. package/core/esm2022/lib/services/scroll-detection.api.mjs +33 -21
  12. package/core/fesm2022/wlcm-angular-core.mjs +52 -40
  13. package/core/fesm2022/wlcm-angular-core.mjs.map +1 -1
  14. package/core/lib/services/scroll-detection.api.d.ts +4 -1
  15. package/datepicker/esm2022/index.mjs +5 -2
  16. package/datepicker/esm2022/lib/components/calendar-header/calendar-header.component.mjs +3 -3
  17. package/datepicker/esm2022/lib/components/range/date-range-calendar-header/date-range-calendar-header.component.mjs +3 -3
  18. package/datepicker/esm2022/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.mjs +7 -7
  19. package/datepicker/esm2022/lib/components/range/date-range-picker-input/date-range-picker-input.component.mjs +12 -10
  20. package/datepicker/esm2022/lib/components/range/double-calendar-range-picker/double-calendar-range-picker.component.mjs +168 -0
  21. package/datepicker/esm2022/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.mjs +95 -0
  22. package/datepicker/esm2022/lib/components/single/datepicker-input-container/datepicker-input-container.component.mjs +3 -3
  23. package/datepicker/esm2022/lib/components/single/datepicker-panel/datepicker-panel.component.mjs +3 -3
  24. package/datepicker/esm2022/lib/constants/range/date-range-picker.constants.mjs +3 -1
  25. package/datepicker/esm2022/lib/datepicker.module.mjs +4 -4
  26. package/datepicker/esm2022/lib/directives/calendar.directive.mjs +3 -3
  27. package/datepicker/esm2022/lib/directives/datepicker-input.base.mjs +3 -3
  28. package/datepicker/esm2022/lib/directives/datepicker-trigger.base.mjs +7 -11
  29. package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-end.directive.mjs +3 -3
  30. package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input-start.directive.mjs +3 -3
  31. package/datepicker/esm2022/lib/directives/ragne/date-range-picker-input.base.mjs +9 -7
  32. package/datepicker/esm2022/lib/directives/ragne/left-calendar.directive.mjs +3 -3
  33. package/datepicker/esm2022/lib/directives/ragne/right-calendar.directive.mjs +3 -3
  34. package/datepicker/esm2022/lib/directives/single/datepicker-input.directive.mjs +3 -3
  35. package/datepicker/esm2022/lib/models/date-picker.models.mjs +3 -3
  36. package/datepicker/esm2022/lib/models/range/data-range-calendar.models.mjs +4 -4
  37. package/datepicker/esm2022/lib/models/range/date-range-picker.models.mjs +27 -2
  38. package/datepicker/fesm2022/wlcm-angular-datepicker.mjs +701 -605
  39. package/datepicker/fesm2022/wlcm-angular-datepicker.mjs.map +1 -1
  40. package/datepicker/index.d.ts +4 -1
  41. package/datepicker/lib/components/range/date-range-picker-bottom-panel/date-range-picker-bottom-panel.component.d.ts +3 -3
  42. package/datepicker/lib/components/range/date-range-picker-input/date-range-picker-input.component.d.ts +5 -5
  43. package/datepicker/lib/components/range/{date-range-picker/date-range-picker.component.d.ts → double-calendar-range-picker/double-calendar-range-picker.component.d.ts} +12 -16
  44. package/datepicker/lib/components/range/single-calendar-range-picker/single-calendar-range-picker.component.d.ts +27 -0
  45. package/datepicker/lib/constants/range/date-range-picker.constants.d.ts +2 -1
  46. package/datepicker/lib/directives/datepicker-trigger.base.d.ts +1 -2
  47. package/datepicker/lib/models/range/date-range-picker.models.d.ts +15 -1
  48. package/filters/esm2022/lib/components/filters-group/filters-group.component.mjs +3 -3
  49. package/filters/esm2022/lib/directives/filter.directive.mjs +3 -3
  50. package/filters/esm2022/lib/filters.module.mjs +4 -4
  51. package/filters/esm2022/lib/models/filters-group.models.mjs +3 -3
  52. package/filters/fesm2022/wlcm-angular-filters.mjs +13 -13
  53. package/forms/esm2022/lib/forms/components/autocomplete/autocomplete.component.mjs +3 -3
  54. package/forms/esm2022/lib/forms/components/checkbox/checkbox.component.mjs +5 -5
  55. package/forms/esm2022/lib/forms/components/checkbox-group/checkbox-group.component.mjs +3 -3
  56. package/forms/esm2022/lib/forms/components/error/error.component.mjs +3 -3
  57. package/forms/esm2022/lib/forms/components/form-field/form-field.component.mjs +3 -3
  58. package/forms/esm2022/lib/forms/components/label/label.component.mjs +3 -3
  59. package/forms/esm2022/lib/forms/components/partials/autocomplete-suffix/autocomplete-suffix.component.mjs +3 -3
  60. package/forms/esm2022/lib/forms/components/select/select.component.mjs +14 -5
  61. package/forms/esm2022/lib/forms/directives/autocomplete.directive.mjs +3 -3
  62. package/forms/esm2022/lib/forms/directives/form-field-custom-container.directive.mjs +3 -3
  63. package/forms/esm2022/lib/forms/directives/form-field-hint.directive.mjs +3 -3
  64. package/forms/esm2022/lib/forms/directives/form-field-prefix.directive.mjs +3 -3
  65. package/forms/esm2022/lib/forms/directives/form-field-suffix.directive.mjs +3 -3
  66. package/forms/esm2022/lib/forms/directives/input.directive.mjs +3 -3
  67. package/forms/esm2022/lib/forms/directives/select-input-binder.directive.mjs +3 -3
  68. package/forms/esm2022/lib/forms/forms.module.mjs +4 -4
  69. package/forms/esm2022/lib/forms/models/autocomplete.models.mjs +3 -3
  70. package/forms/esm2022/lib/forms/pipes/errors-mapper.pipe.mjs +3 -3
  71. package/forms/esm2022/lib/forms/services/form-state-handler.service.mjs +3 -3
  72. package/forms/esm2022/lib/forms/services/places.api.mjs +6 -6
  73. package/forms/fesm2022/wlcm-angular-forms.mjs +75 -66
  74. package/forms/fesm2022/wlcm-angular-forms.mjs.map +1 -1
  75. package/forms/lib/forms/components/select/select.component.d.ts +1 -0
  76. package/forms/lib/forms/services/places.api.d.ts +1 -0
  77. package/package.json +1 -1
  78. package/phone-input/esm2022/lib/components/country-code-select/country-code-select.component.mjs +3 -3
  79. package/phone-input/esm2022/lib/components/phone-input-container/phone-input-container.component.mjs +3 -3
  80. package/phone-input/esm2022/lib/directives/phone-input.directive.mjs +3 -3
  81. package/phone-input/esm2022/lib/phone-input.module.mjs +4 -4
  82. package/phone-input/esm2022/lib/pipes/phone-code.pipe.mjs +3 -3
  83. package/phone-input/fesm2022/wlcm-angular-phone-input.mjs +16 -16
  84. package/search-field/esm2022/lib/components/search-field/search-field.component.mjs +3 -3
  85. package/search-field/esm2022/lib/search-field.module.mjs +4 -4
  86. package/search-field/fesm2022/wlcm-angular-search-field.mjs +7 -7
  87. package/stepper/esm2022/lib/components/step/step.component.mjs +3 -3
  88. package/stepper/esm2022/lib/components/step-header/step-header.component.mjs +3 -3
  89. package/stepper/esm2022/lib/components/stepper/stepper.component.mjs +3 -3
  90. package/stepper/esm2022/lib/components/stepper-header/stepper-header.component.mjs +3 -3
  91. package/stepper/esm2022/lib/directives/load-on-active-step.directive.mjs +3 -3
  92. package/stepper/esm2022/lib/models/step.models.mjs +3 -3
  93. package/stepper/esm2022/lib/models/stepper.models.mjs +3 -3
  94. package/stepper/esm2022/lib/stepper.module.mjs +4 -4
  95. package/stepper/fesm2022/wlcm-angular-stepper.mjs +25 -25
  96. package/styles/components/datepicker/date-range-picker/_date-range-picker-body.scss +1 -1
  97. package/styles/components/datepicker/date-range-picker/_date-range-picker-input.scss +1 -0
  98. package/table/esm2022/lib/components/table/table.component.mjs +3 -3
  99. package/table/esm2022/lib/components/table-head/table-head.component.mjs +3 -3
  100. package/table/esm2022/lib/components/table-head-actions/table-head-actions.component.mjs +3 -3
  101. package/table/esm2022/lib/components/table-head-data/table-head-data.component.mjs +3 -3
  102. package/table/esm2022/lib/components/table-row/table-row.component.mjs +3 -3
  103. package/table/esm2022/lib/components/table-row-actions/table-row-actions.component.mjs +3 -3
  104. package/table/esm2022/lib/components/table-row-data/table-row-data.component.mjs +3 -3
  105. package/table/esm2022/lib/components/table-row-spacer/table-row-spacer.component.mjs +3 -3
  106. package/table/esm2022/lib/directives/scrollable-table-container.directive.mjs +3 -3
  107. package/table/esm2022/lib/pipes/table-row-injector.pipe.mjs +3 -3
  108. package/table/esm2022/lib/table.module.mjs +4 -4
  109. package/table/fesm2022/wlcm-angular-table.mjs +34 -34
  110. package/datepicker/esm2022/lib/components/range/date-range-picker/date-range-picker.component.mjs +0 -174
@@ -77,10 +77,10 @@ class DefaultTableConfigManager extends TableConfigManager {
77
77
  }
78
78
 
79
79
  class WlcmTableRowSpacerComponent {
80
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmTableRowSpacerComponent, isStandalone: true, selector: "wlcm-table-row-spacer", host: { classAttribute: "wlcm-table-row-spacer" }, ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
80
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowSpacerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
81
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmTableRowSpacerComponent, isStandalone: true, selector: "wlcm-table-row-spacer", host: { classAttribute: "wlcm-table-row-spacer" }, ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
82
82
  }
83
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowSpacerComponent, decorators: [{
83
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowSpacerComponent, decorators: [{
84
84
  type: Component,
85
85
  args: [{ selector: 'wlcm-table-row-spacer', host: { class: 'wlcm-table-row-spacer' }, standalone: true, imports: [CommonModule], template: "" }]
86
86
  }] });
@@ -97,10 +97,10 @@ class WlcmTableRowInjectorPipe {
97
97
  parent: this.injector,
98
98
  });
99
99
  }
100
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
101
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowInjectorPipe, isStandalone: true, name: "wlcmTableRowInjector" }); }
100
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowInjectorPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
101
+ static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowInjectorPipe, isStandalone: true, name: "wlcmTableRowInjector" }); }
102
102
  }
103
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowInjectorPipe, decorators: [{
103
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowInjectorPipe, decorators: [{
104
104
  type: Pipe,
105
105
  args: [{
106
106
  name: 'wlcmTableRowInjector',
@@ -158,8 +158,8 @@ let WlcmTableComponent = class WlcmTableComponent {
158
158
  this.selectionModel.updateCollection(rows.filter(this.isRowSelectable()).map(this.selectId()));
159
159
  });
160
160
  }
161
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableComponent, deps: [{ token: WlcmTableSelectionModel }, { token: WLCM_TABLE_CONFIG }, { token: TableConfigManager }], target: i0.ɵɵFactoryTarget.Component }); }
162
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmTableComponent, isStandalone: true, selector: "wlcm-table", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, headTemplate: { classPropertyName: "headTemplate", publicName: "headTemplate", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: "rowTemplate", publicName: "rowTemplate", isSignal: true, isRequired: true, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, selectId: { classPropertyName: "selectId", publicName: "selectId", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wlcm-table" }, providers: [
161
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableComponent, deps: [{ token: WlcmTableSelectionModel }, { token: WLCM_TABLE_CONFIG }, { token: TableConfigManager }], target: i0.ɵɵFactoryTarget.Component }); }
162
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmTableComponent, isStandalone: true, selector: "wlcm-table", inputs: { rows: { classPropertyName: "rows", publicName: "rows", isSignal: true, isRequired: false, transformFunction: null }, headTemplate: { classPropertyName: "headTemplate", publicName: "headTemplate", isSignal: true, isRequired: false, transformFunction: null }, rowTemplate: { classPropertyName: "rowTemplate", publicName: "rowTemplate", isSignal: true, isRequired: true, transformFunction: null }, isRowSelectable: { classPropertyName: "isRowSelectable", publicName: "isRowSelectable", isSignal: true, isRequired: false, transformFunction: null }, selectId: { classPropertyName: "selectId", publicName: "selectId", isSignal: true, isRequired: false, transformFunction: null }, trackBy: { classPropertyName: "trackBy", publicName: "trackBy", isSignal: true, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wlcm-table" }, providers: [
163
163
  { provide: TableConfigManager, useClass: DefaultTableConfigManager },
164
164
  { provide: WlcmTableSelectionModel, useClass: DefaultWlcmTableSelectionModel },
165
165
  ], ngImport: i0, template: "@if (headTemplate()) {\n <ng-container\n *ngTemplateOutlet=\"headTemplate()!; injector: injector\"\n ></ng-container>\n}\n\n<tbody>\n <ng-container\n *ngFor=\"\n let row of rows();\n trackBy: trackBy();\n let index = index;\n let first = first;\n let last = last\n \"\n >\n @if ((first && headTemplate()) || !first) {\n <wlcm-table-row-spacer></wlcm-table-row-spacer>\n }\n\n <ng-container\n *rxLet=\"\n {\n $implicit: row,\n selectId: selectId(),\n isRowSelectable: isRowSelectable(),\n index: index,\n first: first,\n last: last\n };\n let context\n \"\n >\n <ng-container\n *ngTemplateOutlet=\"\n rowTemplate();\n context: context;\n injector: context | wlcmTableRowInjector\n \"\n >\n </ng-container>\n </ng-container>\n </ng-container>\n</tbody>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: WlcmTableRowInjectorPipe, name: "wlcmTableRowInjector" }, { kind: "component", type: WlcmTableRowSpacerComponent, selector: "wlcm-table-row-spacer" }, { kind: "directive", type: RxLet, selector: "[rxLet]", inputs: ["rxLet", "rxLetStrategy", "rxLetComplete", "rxLetError", "rxLetSuspense", "rxLetContextTrigger", "rxLetCompleteTrigger", "rxLetErrorTrigger", "rxLetSuspenseTrigger", "rxLetNextTrigger", "rxLetRenderCallback", "rxLetParent", "rxLetPatchZone"], outputs: ["rendered"] }] }); }
@@ -168,7 +168,7 @@ WlcmTableComponent = __decorate([
168
168
  UntilDestroy(),
169
169
  __metadata("design:paramtypes", [WlcmTableSelectionModel, Object, TableConfigManager])
170
170
  ], WlcmTableComponent);
171
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableComponent, decorators: [{
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableComponent, decorators: [{
172
172
  type: Component,
173
173
  args: [{ selector: 'wlcm-table', host: { class: 'wlcm-table' }, standalone: true, imports: [CommonModule, WlcmTableRowInjectorPipe, WlcmTableRowSpacerComponent, RxLet], providers: [
174
174
  { provide: TableConfigManager, useClass: DefaultTableConfigManager },
@@ -196,14 +196,14 @@ let WlcmTableHeadActionsComponent = class WlcmTableHeadActionsComponent {
196
196
  .pipe(untilDestroyed(this))
197
197
  .subscribe((isSelected) => this.control.setValue(isSelected));
198
198
  }
199
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadActionsComponent, deps: [{ token: WlcmTableSelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
200
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmTableHeadActionsComponent, isStandalone: true, selector: "wlcm-table-head-actions", host: { classAttribute: "wlcm-table-head-actions" }, ngImport: i0, template: "<wlcm-checkbox\n [formControl]=\"control\"\n (changed)=\"toggle($event)\"\n></wlcm-checkbox>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i2.WlcmCheckboxComponent, selector: "wlcm-checkbox", inputs: ["value"], outputs: ["changed"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
199
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadActionsComponent, deps: [{ token: WlcmTableSelectionModel }], target: i0.ɵɵFactoryTarget.Component }); }
200
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmTableHeadActionsComponent, isStandalone: true, selector: "wlcm-table-head-actions", host: { classAttribute: "wlcm-table-head-actions" }, ngImport: i0, template: "<wlcm-checkbox\n [formControl]=\"control\"\n (changed)=\"toggle($event)\"\n></wlcm-checkbox>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i2.WlcmCheckboxComponent, selector: "wlcm-checkbox", inputs: ["value"], outputs: ["changed"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
201
201
  };
202
202
  WlcmTableHeadActionsComponent = __decorate([
203
203
  UntilDestroy(),
204
204
  __metadata("design:paramtypes", [WlcmTableSelectionModel])
205
205
  ], WlcmTableHeadActionsComponent);
206
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadActionsComponent, decorators: [{
206
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadActionsComponent, decorators: [{
207
207
  type: Component,
208
208
  args: [{ selector: 'wlcm-table-head-actions', host: { class: 'wlcm-table-head-actions' }, standalone: true, imports: [CommonModule, WlcmFormsModule, ReactiveFormsModule], template: "<wlcm-checkbox\n [formControl]=\"control\"\n (changed)=\"toggle($event)\"\n></wlcm-checkbox>\n" }]
209
209
  }], ctorParameters: () => [{ type: WlcmTableSelectionModel }] });
@@ -212,28 +212,28 @@ class WlcmTableHeadComponent {
212
212
  constructor(tableConfigManager) {
213
213
  this.tableConfigManager = tableConfigManager;
214
214
  }
215
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadComponent, deps: [{ token: TableConfigManager }], target: i0.ɵɵFactoryTarget.Component }); }
216
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmTableHeadComponent, isStandalone: true, selector: "wlcm-table-head", host: { classAttribute: "wlcm-table-head" }, ngImport: i0, template: "@if (tableConfigManager.selectable) {\n <wlcm-table-head-actions></wlcm-table-head-actions>\n}\n\n<ng-content select=\"wlcm-table-head-data\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmTableHeadActionsComponent, selector: "wlcm-table-head-actions" }] }); }
215
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadComponent, deps: [{ token: TableConfigManager }], target: i0.ɵɵFactoryTarget.Component }); }
216
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmTableHeadComponent, isStandalone: true, selector: "wlcm-table-head", host: { classAttribute: "wlcm-table-head" }, ngImport: i0, template: "@if (tableConfigManager.selectable) {\n <wlcm-table-head-actions></wlcm-table-head-actions>\n}\n\n<ng-content select=\"wlcm-table-head-data\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmTableHeadActionsComponent, selector: "wlcm-table-head-actions" }] }); }
217
217
  }
218
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadComponent, decorators: [{
218
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadComponent, decorators: [{
219
219
  type: Component,
220
220
  args: [{ selector: 'wlcm-table-head', host: { class: 'wlcm-table-head' }, standalone: true, imports: [CommonModule, WlcmTableHeadActionsComponent], template: "@if (tableConfigManager.selectable) {\n <wlcm-table-head-actions></wlcm-table-head-actions>\n}\n\n<ng-content select=\"wlcm-table-head-data\"></ng-content>\n" }]
221
221
  }], ctorParameters: () => [{ type: TableConfigManager }] });
222
222
 
223
223
  class WlcmTableHeadDataComponent {
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmTableHeadDataComponent, isStandalone: true, selector: "wlcm-table-head-data", host: { classAttribute: "wlcm-table-head-data" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
224
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
225
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmTableHeadDataComponent, isStandalone: true, selector: "wlcm-table-head-data", host: { classAttribute: "wlcm-table-head-data" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
226
226
  }
227
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableHeadDataComponent, decorators: [{
227
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableHeadDataComponent, decorators: [{
228
228
  type: Component,
229
229
  args: [{ selector: 'wlcm-table-head-data', host: { class: 'wlcm-table-head-data' }, standalone: true, imports: [CommonModule], template: "<ng-content></ng-content>\n" }]
230
230
  }] });
231
231
 
232
232
  class WlcmTableRowActionsComponent {
233
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmTableRowActionsComponent, isStandalone: true, selector: "wlcm-table-row-actions", host: { classAttribute: "wlcm-table-row-actions" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
233
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowActionsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
234
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmTableRowActionsComponent, isStandalone: true, selector: "wlcm-table-row-actions", host: { classAttribute: "wlcm-table-row-actions" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
235
235
  }
236
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowActionsComponent, decorators: [{
236
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowActionsComponent, decorators: [{
237
237
  type: Component,
238
238
  args: [{ selector: 'wlcm-table-row-actions', host: { class: 'wlcm-table-row-actions' }, standalone: true, imports: [CommonModule], template: "<ng-content></ng-content>\n" }]
239
239
  }] });
@@ -285,8 +285,8 @@ let WlcmTableRowComponent = class WlcmTableRowComponent {
285
285
  isSelected ? this.markAsSelected() : this.markAsUnselected();
286
286
  });
287
287
  }
288
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowComponent, deps: [{ token: i0.ElementRef }, { token: TableConfigManager }, { token: WlcmTableSelectionModel }, { token: WLCM_TABLE_ROW_CONTEXT }], target: i0.ɵɵFactoryTarget.Component }); }
289
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.6", type: WlcmTableRowComponent, isStandalone: true, selector: "wlcm-table-row", host: { properties: { "class.wlcm-table-row-first": "this.first", "class.wlcm-table-row-last": "this.last" }, classAttribute: "wlcm-table-row" }, ngImport: i0, template: "@if (tableConfigManager.selectable) {\n <wlcm-table-row-actions>\n @if (isSelectable()) {\n <wlcm-checkbox\n [ngModel]=\"isSelected()\"\n (changed)=\"selectionChanged($event)\"\n ></wlcm-checkbox>\n }\n </wlcm-table-row-actions>\n}\n\n<ng-content select=\"wlcm-table-row-data\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmTableRowActionsComponent, selector: "wlcm-table-row-actions" }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i2.WlcmCheckboxComponent, selector: "wlcm-checkbox", inputs: ["value"], outputs: ["changed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
288
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowComponent, deps: [{ token: i0.ElementRef }, { token: TableConfigManager }, { token: WlcmTableSelectionModel }, { token: WLCM_TABLE_ROW_CONTEXT }], target: i0.ɵɵFactoryTarget.Component }); }
289
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: WlcmTableRowComponent, isStandalone: true, selector: "wlcm-table-row", host: { properties: { "class.wlcm-table-row-first": "this.first", "class.wlcm-table-row-last": "this.last" }, classAttribute: "wlcm-table-row" }, ngImport: i0, template: "@if (tableConfigManager.selectable) {\n <wlcm-table-row-actions>\n @if (isSelectable()) {\n <wlcm-checkbox\n [ngModel]=\"isSelected()\"\n (changed)=\"selectionChanged($event)\"\n ></wlcm-checkbox>\n }\n </wlcm-table-row-actions>\n}\n\n<ng-content select=\"wlcm-table-row-data\"></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: WlcmTableRowActionsComponent, selector: "wlcm-table-row-actions" }, { kind: "ngmodule", type: WlcmFormsModule }, { kind: "component", type: i2.WlcmCheckboxComponent, selector: "wlcm-checkbox", inputs: ["value"], outputs: ["changed"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] }); }
290
290
  };
291
291
  WlcmTableRowComponent = __decorate([
292
292
  UntilDestroy(),
@@ -294,7 +294,7 @@ WlcmTableRowComponent = __decorate([
294
294
  TableConfigManager,
295
295
  WlcmTableSelectionModel, Object])
296
296
  ], WlcmTableRowComponent);
297
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowComponent, decorators: [{
297
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowComponent, decorators: [{
298
298
  type: Component,
299
299
  args: [{ selector: 'wlcm-table-row', host: { class: 'wlcm-table-row' }, standalone: true, imports: [CommonModule, WlcmTableRowActionsComponent, WlcmFormsModule, FormsModule], template: "@if (tableConfigManager.selectable) {\n <wlcm-table-row-actions>\n @if (isSelectable()) {\n <wlcm-checkbox\n [ngModel]=\"isSelected()\"\n (changed)=\"selectionChanged($event)\"\n ></wlcm-checkbox>\n }\n </wlcm-table-row-actions>\n}\n\n<ng-content select=\"wlcm-table-row-data\"></ng-content>\n" }]
300
300
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: TableConfigManager }, { type: WlcmTableSelectionModel }, { type: undefined, decorators: [{
@@ -309,10 +309,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImpor
309
309
  }] } });
310
310
 
311
311
  class WlcmTableRowDataComponent {
312
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
313
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmTableRowDataComponent, isStandalone: true, selector: "wlcm-table-row-data", host: { classAttribute: "wlcm-table-row-data" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
312
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowDataComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
313
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: WlcmTableRowDataComponent, isStandalone: true, selector: "wlcm-table-row-data", host: { classAttribute: "wlcm-table-row-data" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
314
314
  }
315
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableRowDataComponent, decorators: [{
315
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableRowDataComponent, decorators: [{
316
316
  type: Component,
317
317
  args: [{ selector: 'wlcm-table-row-data', host: { class: 'wlcm-table-row-data' }, standalone: true, imports: [CommonModule], template: "<ng-content></ng-content>\n" }]
318
318
  }] });
@@ -341,14 +341,14 @@ let WlcmScrollableTableContainerDirective = class WlcmScrollableTableContainerDi
341
341
  });
342
342
  });
343
343
  }
344
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmScrollableTableContainerDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
345
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "18.2.6", type: WlcmScrollableTableContainerDirective, isStandalone: true, selector: "[wlcmScrollableTableContainer]", inputs: { scrollDownOffsetPercent: { classPropertyName: "scrollDownOffsetPercent", publicName: "scrollDownOffsetPercent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolledDown: "scrolledDown" }, host: { classAttribute: "wlcm-scrollable-table-container" }, ngImport: i0 }); }
344
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmScrollableTableContainerDirective, deps: [{ token: i0.NgZone }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
345
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "17.3.5", type: WlcmScrollableTableContainerDirective, isStandalone: true, selector: "[wlcmScrollableTableContainer]", inputs: { scrollDownOffsetPercent: { classPropertyName: "scrollDownOffsetPercent", publicName: "scrollDownOffsetPercent", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { scrolledDown: "scrolledDown" }, host: { classAttribute: "wlcm-scrollable-table-container" }, ngImport: i0 }); }
346
346
  };
347
347
  WlcmScrollableTableContainerDirective = __decorate([
348
348
  UntilDestroy(),
349
349
  __metadata("design:paramtypes", [NgZone, ElementRef])
350
350
  ], WlcmScrollableTableContainerDirective);
351
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmScrollableTableContainerDirective, decorators: [{
351
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmScrollableTableContainerDirective, decorators: [{
352
352
  type: Directive,
353
353
  args: [{
354
354
  selector: '[wlcmScrollableTableContainer]',
@@ -366,8 +366,8 @@ const publicComponents = [
366
366
  ];
367
367
  const publicDirectives = [WlcmScrollableTableContainerDirective];
368
368
  class WlcmTableModule {
369
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
370
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableModule, imports: [CommonModule, WlcmTableComponent,
369
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
370
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableModule, imports: [CommonModule, WlcmTableComponent,
371
371
  WlcmTableHeadComponent,
372
372
  WlcmTableHeadDataComponent,
373
373
  WlcmTableRowDataComponent,
@@ -376,9 +376,9 @@ class WlcmTableModule {
376
376
  WlcmTableHeadDataComponent,
377
377
  WlcmTableRowDataComponent,
378
378
  WlcmTableRowComponent, WlcmScrollableTableContainerDirective] }); }
379
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableModule, imports: [CommonModule, publicComponents] }); }
379
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableModule, imports: [CommonModule, publicComponents] }); }
380
380
  }
381
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmTableModule, decorators: [{
381
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: WlcmTableModule, decorators: [{
382
382
  type: NgModule,
383
383
  args: [{
384
384
  imports: [CommonModule, ...publicComponents, ...publicDirectives],
@@ -1,174 +0,0 @@
1
- import { __decorate, __metadata } from "tslib";
2
- import { Component, ElementRef, Inject, Optional, ViewChild, computed, effect, signal, } from '@angular/core';
3
- import { CommonModule } from '@angular/common';
4
- import { DefaultMatCalendarRangeStrategy, MAT_DATE_RANGE_SELECTION_STRATEGY, MatCalendar, MatDateSelectionModel, MatDatepickerModule, MatMonthView, } from '@angular/material/datepicker';
5
- import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy';
6
- import { WlcmDateRangePickerBottomPanelComponent } from '../date-range-picker-bottom-panel/date-range-picker-bottom-panel.component';
7
- import { Subject, startWith, takeUntil, tap } from 'rxjs';
8
- import { DateAdapter } from '@angular/material/core';
9
- import { WlcmDateRangeCalendarHeaderComponent } from '../date-range-calendar-header/date-range-calendar-header.component';
10
- import { WLCM_DATE_RANGE_PICKER_CONFIG } from '../../../constants/range/date-range-picker.constants';
11
- import { WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER, WLCM_DATE_RANGE_SELECTION_MODEL, } from '../../../constants/range/date-range-selection-model.constants';
12
- import { WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL } from '../../../constants/range/date-range-trigger-selection-model.constants';
13
- import { WlcmLeftCalendarDirective } from '../../../directives/ragne/left-calendar.directive';
14
- import { WlcmRightCalendarDirective } from '../../../directives/ragne/right-calendar.directive';
15
- import { WlcmDatepickerTrigger } from '../../../directives/datepicker-trigger.base';
16
- import { WlcmCalendarDirective } from '../../../directives/calendar.directive';
17
- import { WLCM_DATEPICKER_CONFIG } from '../../../constants/datepicker.constants';
18
- import * as i0 from "@angular/core";
19
- import * as i1 from "../../../directives/datepicker-trigger.base";
20
- import * as i2 from "@angular/material/core";
21
- import * as i3 from "@angular/material/datepicker";
22
- let WlcmDateRangePickerComponent = class WlcmDateRangePickerComponent {
23
- constructor(rangeConfig, rangeSelectionStrategy, localSelectionModel, triggerSelectionModel, trigger, datepickerConfig, dateAdapter) {
24
- this.rangeConfig = rangeConfig;
25
- this.rangeSelectionStrategy = rangeSelectionStrategy;
26
- this.localSelectionModel = localSelectionModel;
27
- this.triggerSelectionModel = triggerSelectionModel;
28
- this.trigger = trigger;
29
- this.datepickerConfig = datepickerConfig;
30
- this.dateAdapter = dateAdapter;
31
- this.headerComponent = WlcmDateRangeCalendarHeaderComponent;
32
- this._isViewInitialized = false;
33
- this._isComplete = signal(false);
34
- this.isComplete = computed(() => this._isComplete());
35
- this.startDate = signal(new Date());
36
- this.leftCalendarYearViewActivated = signal(false);
37
- this.rightCalendarYearViewActivated = signal(false);
38
- this.handleSelectionChanged();
39
- this.localSelectionModel.updateSelection(this.triggerSelectionModel.selection, this);
40
- if (this.triggerSelectionModel.selection.start) {
41
- this.startDate.set(this.triggerSelectionModel.selection.start);
42
- }
43
- if (this.rangeConfig.headerComponent) {
44
- this.headerComponent = this.rangeConfig.headerComponent;
45
- }
46
- effect(() => {
47
- if (!this._isViewInitialized)
48
- return;
49
- this.leftCalendar.activeDate = this.startDate();
50
- this.rightCalendar.activeDate = this.dateAdapter.addCalendarMonths(this.startDate(), 1);
51
- this.rightCalendar.startAt = this.dateAdapter.addCalendarMonths(this.startDate(), 1);
52
- });
53
- }
54
- ngAfterViewInit() {
55
- this._isViewInitialized = true;
56
- this.leftCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view) => {
57
- this.leftCalendarYearViewActivated.set(view !== 'month');
58
- });
59
- this.rightCalendar.viewChanged.pipe(untilDestroyed(this)).subscribe((view) => {
60
- this.rightCalendarYearViewActivated.set(view !== 'month');
61
- });
62
- this.handleRightCalendarPreviewChange();
63
- }
64
- calendarSelection(event) {
65
- const newSelection = this.rangeSelectionStrategy.selectionFinished(event.value, this.localSelectionModel.selection, event.event);
66
- this.localSelectionModel.updateSelection(newSelection, this);
67
- }
68
- calendarDragDrop(event) {
69
- this.localSelectionModel.updateSelection(event.value, this);
70
- }
71
- apply() {
72
- this.triggerSelectionModel.updateSelection(this.localSelectionModel.selection, this);
73
- this.trigger.close();
74
- }
75
- reset() {
76
- this.trigger.close();
77
- }
78
- get selected() {
79
- return this.localSelectionModel.selection;
80
- }
81
- get leftCalendarActiveCell() {
82
- return this.leftCalendarElement.nativeElement.querySelector('.mat-calendar-body-active');
83
- }
84
- handleSelectionChanged() {
85
- this.localSelectionModel.selectionChanged
86
- .pipe(untilDestroyed(this))
87
- .subscribe(() => this._isComplete.set(this.localSelectionModel.isComplete()));
88
- }
89
- handleRightCalendarPreviewChange() {
90
- const viewChanged = new Subject();
91
- this.rightCalendar.viewChanged
92
- .pipe(untilDestroyed(this))
93
- .pipe(tap(() => viewChanged.next()))
94
- .pipe(startWith(this.rightCalendar.currentView))
95
- .subscribe((view) => {
96
- if (view !== 'month')
97
- return;
98
- this.rightCalendar.monthView._matCalendarBody.previewChange
99
- .pipe(takeUntil(viewChanged), untilDestroyed(this))
100
- .subscribe(() => {
101
- if (this.leftCalendar.currentView !== 'month' || !this.leftCalendar.monthView._rangeStart)
102
- return;
103
- this.leftCalendar.monthView._previewStart = this.rightCalendar.monthView._previewStart;
104
- this.leftCalendar.monthView._previewEnd = this.rightCalendar.monthView._previewEnd;
105
- const activeCell = this.leftCalendarActiveCell;
106
- if (activeCell && activeCell === document.activeElement)
107
- activeCell.blur();
108
- this.leftCalendar.monthView._changeDetectorRef.markForCheck();
109
- });
110
- });
111
- }
112
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmDateRangePickerComponent, deps: [{ token: WLCM_DATE_RANGE_PICKER_CONFIG, optional: true }, { token: MAT_DATE_RANGE_SELECTION_STRATEGY }, { token: WLCM_DATE_RANGE_SELECTION_MODEL }, { token: WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL }, { token: i1.WlcmDatepickerTrigger }, { token: WLCM_DATEPICKER_CONFIG }, { token: i2.DateAdapter }], target: i0.ɵɵFactoryTarget.Component }); }
113
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.6", type: WlcmDateRangePickerComponent, isStandalone: true, selector: "wlcm-date-range-picker", providers: [
114
- {
115
- provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
116
- useClass: DefaultMatCalendarRangeStrategy,
117
- },
118
- WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,
119
- ], viewQueries: [{ propertyName: "leftCalendar", first: true, predicate: WlcmLeftCalendarDirective, descendants: true, read: MatCalendar }, { propertyName: "rightCalendar", first: true, predicate: WlcmRightCalendarDirective, descendants: true, read: MatCalendar }, { propertyName: "leftCalendarElement", first: true, predicate: WlcmLeftCalendarDirective, descendants: true, read: ElementRef }, { propertyName: "monthView", first: true, predicate: MatMonthView, descendants: true }], ngImport: i0, template: "<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"wlcm-date-range-picker-body\">\n <mat-calendar\n wlcmCalendar\n wlcmLeftCalendar\n [selected]=\"selected\"\n [disabled]=\"rightCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n\n <mat-calendar\n wlcmCalendar\n wlcmRightCalendar\n [selected]=\"selected\"\n [disabled]=\"leftCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n </div>\n\n <wlcm-date-range-picker-bottom-panel></wlcm-date-range-picker-bottom-panel>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.MatCalendar, selector: "mat-calendar", inputs: ["headerComponent", "startAt", "startView", "selected", "minDate", "maxDate", "dateFilter", "dateClass", "comparisonStart", "comparisonEnd", "startDateAccessibleName", "endDateAccessibleName"], outputs: ["selectedChange", "yearSelected", "monthSelected", "viewChanged", "_userSelection", "_userDragDrop"], exportAs: ["matCalendar"] }, { kind: "directive", type: WlcmCalendarDirective, selector: "[wlcmCalendar]" }, { kind: "directive", type: WlcmLeftCalendarDirective, selector: "[wlcmLeftCalendar]" }, { kind: "directive", type: WlcmRightCalendarDirective, selector: "[wlcmRightCalendar]" }, { kind: "component", type: WlcmDateRangePickerBottomPanelComponent, selector: "wlcm-date-range-picker-bottom-panel" }] }); }
120
- };
121
- WlcmDateRangePickerComponent = __decorate([
122
- UntilDestroy(),
123
- __metadata("design:paramtypes", [Object, Object, MatDateSelectionModel,
124
- MatDateSelectionModel,
125
- WlcmDatepickerTrigger, Object, DateAdapter])
126
- ], WlcmDateRangePickerComponent);
127
- export { WlcmDateRangePickerComponent };
128
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: WlcmDateRangePickerComponent, decorators: [{
129
- type: Component,
130
- args: [{ selector: 'wlcm-date-range-picker', standalone: true, imports: [
131
- CommonModule,
132
- MatDatepickerModule,
133
- WlcmCalendarDirective,
134
- WlcmLeftCalendarDirective,
135
- WlcmRightCalendarDirective,
136
- WlcmDateRangePickerBottomPanelComponent,
137
- ], providers: [
138
- {
139
- provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
140
- useClass: DefaultMatCalendarRangeStrategy,
141
- },
142
- WLCM_DATE_RANGE_SELECTION_MODEL_PROVIDER,
143
- ], template: "<div class=\"wlcm-date-range-picker-panel\">\n <div class=\"wlcm-date-range-picker-body\">\n <mat-calendar\n wlcmCalendar\n wlcmLeftCalendar\n [selected]=\"selected\"\n [disabled]=\"rightCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n\n <mat-calendar\n wlcmCalendar\n wlcmRightCalendar\n [selected]=\"selected\"\n [disabled]=\"leftCalendarYearViewActivated()\"\n [headerComponent]=\"headerComponent\"\n (_userSelection)=\"calendarSelection($event)\"\n (_userDragDrop)=\"calendarDragDrop($event)\"\n (dateChange)=\"startDate.set($event)\"\n ></mat-calendar>\n </div>\n\n <wlcm-date-range-picker-bottom-panel></wlcm-date-range-picker-bottom-panel>\n</div>\n" }]
144
- }], ctorParameters: () => [{ type: undefined, decorators: [{
145
- type: Optional
146
- }, {
147
- type: Inject,
148
- args: [WLCM_DATE_RANGE_PICKER_CONFIG]
149
- }] }, { type: undefined, decorators: [{
150
- type: Inject,
151
- args: [MAT_DATE_RANGE_SELECTION_STRATEGY]
152
- }] }, { type: i3.MatDateSelectionModel, decorators: [{
153
- type: Inject,
154
- args: [WLCM_DATE_RANGE_SELECTION_MODEL]
155
- }] }, { type: i3.MatDateSelectionModel, decorators: [{
156
- type: Inject,
157
- args: [WLCM_DATE_RANGE_TRIGGER_SELECTION_MODEL]
158
- }] }, { type: i1.WlcmDatepickerTrigger }, { type: undefined, decorators: [{
159
- type: Inject,
160
- args: [WLCM_DATEPICKER_CONFIG]
161
- }] }, { type: i2.DateAdapter }], propDecorators: { leftCalendar: [{
162
- type: ViewChild,
163
- args: [WlcmLeftCalendarDirective, { read: MatCalendar }]
164
- }], rightCalendar: [{
165
- type: ViewChild,
166
- args: [WlcmRightCalendarDirective, { read: MatCalendar }]
167
- }], leftCalendarElement: [{
168
- type: ViewChild,
169
- args: [WlcmLeftCalendarDirective, { read: ElementRef }]
170
- }], monthView: [{
171
- type: ViewChild,
172
- args: [MatMonthView]
173
- }] } });
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1yYW5nZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy9kYXRlcGlja2VyL3NyYy9saWIvY29tcG9uZW50cy9yYW5nZS9kYXRlLXJhbmdlLXBpY2tlci9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9tb2R1bGVzL2RhdGVwaWNrZXIvc3JjL2xpYi9jb21wb25lbnRzL3JhbmdlL2RhdGUtcmFuZ2UtcGlja2VyL2RhdGUtcmFuZ2UtcGlja2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sUUFBUSxFQUdSLFNBQVMsRUFFVCxRQUFRLEVBQ1IsTUFBTSxFQUNOLE1BQU0sR0FDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUVMLCtCQUErQixFQUMvQixpQ0FBaUMsRUFDakMsV0FBVyxFQUlYLHFCQUFxQixFQUNyQixtQkFBbUIsRUFDbkIsWUFBWSxHQUNiLE1BQU0sOEJBQThCLENBQUM7QUFDdEMsT0FBTyxFQUFFLFlBQVksRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRSxPQUFPLEVBQUUsdUNBQXVDLEVBQUUsTUFBTSw0RUFBNEUsQ0FBQztBQUNySSxPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQzFELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0NBQW9DLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUMxSCxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxzREFBc0Qs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O0FBWTlCLDRCQUE0QjtJQXRCeEMsWUFBWSxFQUFFO3FEQW9Db0IscUJBQXFCO1FBRW5CLHFCQUFxQjtRQUNuQyxxQkFBcUIsVUFFakIsV0FBVztHQW5CekIsNEJBQTRCLENBeUl4Qzs7MkZBeklZLDRCQUE0QjtrQkFyQnhDLFNBQVM7K0JBQ0Usd0JBQXdCLGNBQ3RCLElBQUksV0FDUDt3QkFDUCxZQUFZO3dCQUNaLG1CQUFtQjt3QkFDbkIscUJBQXFCO3dCQUNyQix5QkFBeUI7d0JBQ3pCLDBCQUEwQjt3QkFDMUIsdUNBQXVDO3FCQUN4QyxhQUdVO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQ0FBaUM7NEJBQzFDLFFBQVEsRUFBRSwrQkFBK0I7eUJBQzFDO3dCQUNELHdDQUF3QztxQkFDekM7OzBCQVlFLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCOzswQkFDaEQsTUFBTTsyQkFBQyxpQ0FBaUM7OzBCQUV4QyxNQUFNOzJCQUFDLCtCQUErQjs7MEJBRXRDLE1BQU07MkJBQUMsdUNBQXVDOzswQkFHOUMsTUFBTTsyQkFBQyxzQkFBc0I7bUVBMEI2QixZQUFZO3NCQUF4RSxTQUFTO3VCQUFDLHlCQUF5QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFRyxhQUFhO3NCQUExRSxTQUFTO3VCQUFDLDBCQUEwQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFFQSxtQkFBbUI7c0JBQTlFLFNBQVM7dUJBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFO2dCQUVqQyxTQUFTO3NCQUFqQyxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgT3B0aW9uYWwsXG4gIFNpZ25hbCxcbiAgVHlwZSxcbiAgVmlld0NoaWxkLFxuICBXcml0YWJsZVNpZ25hbCxcbiAgY29tcHV0ZWQsXG4gIGVmZmVjdCxcbiAgc2lnbmFsLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBEYXRlUmFuZ2UsXG4gIERlZmF1bHRNYXRDYWxlbmRhclJhbmdlU3RyYXRlZ3ksXG4gIE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgTWF0Q2FsZW5kYXIsXG4gIE1hdENhbGVuZGFyVXNlckV2ZW50LFxuICBNYXRDYWxlbmRhclZpZXcsXG4gIE1hdERhdGVSYW5nZVNlbGVjdGlvblN0cmF0ZWd5LFxuICBNYXREYXRlU2VsZWN0aW9uTW9kZWwsXG4gIE1hdERhdGVwaWNrZXJNb2R1bGUsXG4gIE1hdE1vbnRoVmlldyxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XG5pbXBvcnQgeyBVbnRpbERlc3Ryb3ksIHVudGlsRGVzdHJveWVkIH0gZnJvbSAnQG5nbmVhdC91bnRpbC1kZXN0cm95JztcbmltcG9ydCB7IFdsY21EYXRlUmFuZ2VQaWNrZXJCb3R0b21QYW5lbENvbXBvbmVudCB9IGZyb20gJy4uL2RhdGUtcmFuZ2UtcGlja2VyLWJvdHRvbS1wYW5lbC9kYXRlLXJhbmdlLXBpY2tlci1ib3R0b20tcGFuZWwuY29tcG9uZW50JztcbmltcG9ydCB7IFN1YmplY3QsIHN0YXJ0V2l0aCwgdGFrZVVudGlsLCB0YXAgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IERhdGVBZGFwdGVyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY29yZSc7XG5pbXBvcnQgeyBXbGNtRGF0ZVJhbmdlQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQgfSBmcm9tICcuLi9kYXRlLXJhbmdlLWNhbGVuZGFyLWhlYWRlci9kYXRlLXJhbmdlLWNhbGVuZGFyLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgV0xDTV9EQVRFX1JBTkdFX1BJQ0tFUl9DT05GSUcgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcmFuZ2UvZGF0ZS1yYW5nZS1waWNrZXIuY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIFdMQ01fREFURV9SQU5HRV9TRUxFQ1RJT05fTU9ERUxfUFJPVklERVIsXG4gIFdMQ01fREFURV9SQU5HRV9TRUxFQ1RJT05fTU9ERUwsXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9yYW5nZS9kYXRlLXJhbmdlLXNlbGVjdGlvbi1tb2RlbC5jb25zdGFudHMnO1xuaW1wb3J0IHsgV0xDTV9EQVRFX1JBTkdFX1RSSUdHRVJfU0VMRUNUSU9OX01PREVMIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3JhbmdlL2RhdGUtcmFuZ2UtdHJpZ2dlci1zZWxlY3Rpb24tbW9kZWwuY29uc3RhbnRzJztcbmltcG9ydCB7IFdsY21MZWZ0Q2FsZW5kYXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL3JhZ25lL2xlZnQtY2FsZW5kYXIuZGlyZWN0aXZlJztcbmltcG9ydCB7IFdsY21SaWdodENhbGVuZGFyRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9yYWduZS9yaWdodC1jYWxlbmRhci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgV2xjbURhdGVSYW5nZVBpY2tlckNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9yYW5nZS9kYXRlLXJhbmdlLXBpY2tlci5tb2RlbHMnO1xuaW1wb3J0IHsgV2xjbURhdGVwaWNrZXJUcmlnZ2VyIH0gZnJvbSAnLi4vLi4vLi4vZGlyZWN0aXZlcy9kYXRlcGlja2VyLXRyaWdnZXIuYmFzZSc7XG5pbXBvcnQgeyBXbGNtQ2FsZW5kYXJEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi8uLi9kaXJlY3RpdmVzL2NhbGVuZGFyLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBXbGNtRGF0ZXBpY2tlckNvbmZpZyB9IGZyb20gJy4uLy4uLy4uL21vZGVscy9kYXRlLXBpY2tlci5tb2RlbHMnO1xuaW1wb3J0IHsgV0xDTV9EQVRFUElDS0VSX0NPTkZJRyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9kYXRlcGlja2VyLmNvbnN0YW50cyc7XG5cbkBVbnRpbERlc3Ryb3koKVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2xjbS1kYXRlLXJhbmdlLXBpY2tlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBDb21tb25Nb2R1bGUsXG4gICAgTWF0RGF0ZXBpY2tlck1vZHVsZSxcbiAgICBXbGNtQ2FsZW5kYXJEaXJlY3RpdmUsXG4gICAgV2xjbUxlZnRDYWxlbmRhckRpcmVjdGl2ZSxcbiAgICBXbGNtUmlnaHRDYWxlbmRhckRpcmVjdGl2ZSxcbiAgICBXbGNtRGF0ZVJhbmdlUGlja2VyQm90dG9tUGFuZWxDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlVXJsOiAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9kYXRlLXJhbmdlLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE1BVF9EQVRFX1JBTkdFX1NFTEVDVElPTl9TVFJBVEVHWSxcbiAgICAgIHVzZUNsYXNzOiBEZWZhdWx0TWF0Q2FsZW5kYXJSYW5nZVN0cmF0ZWd5LFxuICAgIH0sXG4gICAgV0xDTV9EQVRFX1JBTkdFX1NFTEVDVElPTl9NT0RFTF9QUk9WSURFUixcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgV2xjbURhdGVSYW5nZVBpY2tlckNvbXBvbmVudCB7XG4gIHByb3RlY3RlZCBoZWFkZXJDb21wb25lbnQ6IFR5cGU8dW5rbm93bj4gPSBXbGNtRGF0ZVJhbmdlQ2FsZW5kYXJIZWFkZXJDb21wb25lbnQ7XG5cbiAgcHJpdmF0ZSBfaXNWaWV3SW5pdGlhbGl6ZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9pc0NvbXBsZXRlOiBXcml0YWJsZVNpZ25hbDxib29sZWFuPiA9IHNpZ25hbChmYWxzZSk7XG5cbiAgcmVhZG9ubHkgaXNDb21wbGV0ZTogU2lnbmFsPGJvb2xlYW4+ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5faXNDb21wbGV0ZSgpKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KFdMQ01fREFURV9SQU5HRV9QSUNLRVJfQ09ORklHKSBwcml2YXRlIHJhbmdlQ29uZmlnOiBXbGNtRGF0ZVJhbmdlUGlja2VyQ29uZmlnLFxuICAgIEBJbmplY3QoTUFUX0RBVEVfUkFOR0VfU0VMRUNUSU9OX1NUUkFURUdZKVxuICAgIHByaXZhdGUgcmFuZ2VTZWxlY3Rpb25TdHJhdGVneTogTWF0RGF0ZVJhbmdlU2VsZWN0aW9uU3RyYXRlZ3k8RGF0ZT4sXG4gICAgQEluamVjdChXTENNX0RBVEVfUkFOR0VfU0VMRUNUSU9OX01PREVMKVxuICAgIHByb3RlY3RlZCBsb2NhbFNlbGVjdGlvbk1vZGVsOiBNYXREYXRlU2VsZWN0aW9uTW9kZWw8RGF0ZVJhbmdlPERhdGU+PixcbiAgICBASW5qZWN0KFdMQ01fREFURV9SQU5HRV9UUklHR0VSX1NFTEVDVElPTl9NT0RFTClcbiAgICBwcm90ZWN0ZWQgdHJpZ2dlclNlbGVjdGlvbk1vZGVsOiBNYXREYXRlU2VsZWN0aW9uTW9kZWw8RGF0ZVJhbmdlPERhdGU+PixcbiAgICBwcm90ZWN0ZWQgdHJpZ2dlcjogV2xjbURhdGVwaWNrZXJUcmlnZ2VyPFdsY21EYXRlUmFuZ2VQaWNrZXJDb21wb25lbnQ+LFxuICAgIEBJbmplY3QoV0xDTV9EQVRFUElDS0VSX0NPTkZJRykgcHJvdGVjdGVkIGRhdGVwaWNrZXJDb25maWc6IFdsY21EYXRlcGlja2VyQ29uZmlnLFxuICAgIHByb3RlY3RlZCBkYXRlQWRhcHRlcjogRGF0ZUFkYXB0ZXI8RGF0ZT5cbiAgKSB7XG4gICAgdGhpcy5oYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKCk7XG5cbiAgICB0aGlzLmxvY2FsU2VsZWN0aW9uTW9kZWwudXBkYXRlU2VsZWN0aW9uKHRoaXMudHJpZ2dlclNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbiwgdGhpcyk7XG5cbiAgICBpZiAodGhpcy50cmlnZ2VyU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uLnN0YXJ0KSB7XG4gICAgICB0aGlzLnN0YXJ0RGF0ZS5zZXQodGhpcy50cmlnZ2VyU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uLnN0YXJ0KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5yYW5nZUNvbmZpZy5oZWFkZXJDb21wb25lbnQpIHtcbiAgICAgIHRoaXMuaGVhZGVyQ29tcG9uZW50ID0gdGhpcy5yYW5nZUNvbmZpZy5oZWFkZXJDb21wb25lbnQ7XG4gICAgfVxuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICghdGhpcy5faXNWaWV3SW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgICAgdGhpcy5sZWZ0Q2FsZW5kYXIuYWN0aXZlRGF0ZSA9IHRoaXMuc3RhcnREYXRlKCk7XG5cbiAgICAgIHRoaXMucmlnaHRDYWxlbmRhci5hY3RpdmVEYXRlID0gdGhpcy5kYXRlQWRhcHRlci5hZGRDYWxlbmRhck1vbnRocyh0aGlzLnN0YXJ0RGF0ZSgpLCAxKTtcblxuICAgICAgdGhpcy5yaWdodENhbGVuZGFyLnN0YXJ0QXQgPSB0aGlzLmRhdGVBZGFwdGVyLmFkZENhbGVuZGFyTW9udGhzKHRoaXMuc3RhcnREYXRlKCksIDEpO1xuICAgIH0pO1xuICB9XG5cbiAgQFZpZXdDaGlsZChXbGNtTGVmdENhbGVuZGFyRGlyZWN0aXZlLCB7IHJlYWQ6IE1hdENhbGVuZGFyIH0pIGxlZnRDYWxlbmRhciE6IE1hdENhbGVuZGFyPERhdGU+O1xuXG4gIEBWaWV3Q2hpbGQoV2xjbVJpZ2h0Q2FsZW5kYXJEaXJlY3RpdmUsIHsgcmVhZDogTWF0Q2FsZW5kYXIgfSkgcmlnaHRDYWxlbmRhciE6IE1hdENhbGVuZGFyPERhdGU+O1xuXG4gIEBWaWV3Q2hpbGQoV2xjbUxlZnRDYWxlbmRhckRpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pIGxlZnRDYWxlbmRhckVsZW1lbnQhOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICBAVmlld0NoaWxkKE1hdE1vbnRoVmlldykgbW9udGhWaWV3ITogTWF0TW9udGhWaWV3PGFueT47XG5cbiAgc3RhcnREYXRlOiBXcml0YWJsZVNpZ25hbDxEYXRlPiA9IHNpZ25hbChuZXcgRGF0ZSgpKTtcblxuICBsZWZ0Q2FsZW5kYXJZZWFyVmlld0FjdGl2YXRlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHJpZ2h0Q2FsZW5kYXJZZWFyVmlld0FjdGl2YXRlZDogV3JpdGFibGVTaWduYWw8Ym9vbGVhbj4gPSBzaWduYWwoZmFsc2UpO1xuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9pc1ZpZXdJbml0aWFsaXplZCA9IHRydWU7XG5cbiAgICB0aGlzLmxlZnRDYWxlbmRhci52aWV3Q2hhbmdlZC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKS5zdWJzY3JpYmUoKHZpZXc6IE1hdENhbGVuZGFyVmlldykgPT4ge1xuICAgICAgdGhpcy5sZWZ0Q2FsZW5kYXJZZWFyVmlld0FjdGl2YXRlZC5zZXQodmlldyAhPT0gJ21vbnRoJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnJpZ2h0Q2FsZW5kYXIudmlld0NoYW5nZWQucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSkuc3Vic2NyaWJlKCh2aWV3OiBNYXRDYWxlbmRhclZpZXcpID0+IHtcbiAgICAgIHRoaXMucmlnaHRDYWxlbmRhclllYXJWaWV3QWN0aXZhdGVkLnNldCh2aWV3ICE9PSAnbW9udGgnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuaGFuZGxlUmlnaHRDYWxlbmRhclByZXZpZXdDaGFuZ2UoKTtcbiAgfVxuXG4gIGNhbGVuZGFyU2VsZWN0aW9uKGV2ZW50OiBNYXRDYWxlbmRhclVzZXJFdmVudDxEYXRlIHwgbnVsbD4pOiB2b2lkIHtcbiAgICBjb25zdCBuZXdTZWxlY3Rpb246IERhdGVSYW5nZTxEYXRlPiA9IHRoaXMucmFuZ2VTZWxlY3Rpb25TdHJhdGVneS5zZWxlY3Rpb25GaW5pc2hlZChcbiAgICAgIGV2ZW50LnZhbHVlLFxuICAgICAgdGhpcy5sb2NhbFNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbixcbiAgICAgIGV2ZW50LmV2ZW50XG4gICAgKTtcblxuICAgIHRoaXMubG9jYWxTZWxlY3Rpb25Nb2RlbC51cGRhdGVTZWxlY3Rpb24obmV3U2VsZWN0aW9uLCB0aGlzKTtcbiAgfVxuXG4gIGNhbGVuZGFyRHJhZ0Ryb3AoZXZlbnQ6IE1hdENhbGVuZGFyVXNlckV2ZW50PERhdGVSYW5nZTxEYXRlPj4pOiB2b2lkIHtcbiAgICB0aGlzLmxvY2FsU2VsZWN0aW9uTW9kZWwudXBkYXRlU2VsZWN0aW9uKGV2ZW50LnZhbHVlLCB0aGlzKTtcbiAgfVxuXG4gIGFwcGx5KCk6IHZvaWQge1xuICAgIHRoaXMudHJpZ2dlclNlbGVjdGlvbk1vZGVsLnVwZGF0ZVNlbGVjdGlvbih0aGlzLmxvY2FsU2VsZWN0aW9uTW9kZWwuc2VsZWN0aW9uLCB0aGlzKTtcblxuICAgIHRoaXMudHJpZ2dlci5jbG9zZSgpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy50cmlnZ2VyLmNsb3NlKCk7XG4gIH1cblxuICBnZXQgc2VsZWN0ZWQoKTogRGF0ZVJhbmdlPERhdGU+IHtcbiAgICByZXR1cm4gdGhpcy5sb2NhbFNlbGVjdGlvbk1vZGVsLnNlbGVjdGlvbjtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGxlZnRDYWxlbmRhckFjdGl2ZUNlbGwoKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5sZWZ0Q2FsZW5kYXJFbGVtZW50Lm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLm1hdC1jYWxlbmRhci1ib2R5LWFjdGl2ZScpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVTZWxlY3Rpb25DaGFuZ2VkKCk6IHZvaWQge1xuICAgIHRoaXMubG9jYWxTZWxlY3Rpb25Nb2RlbC5zZWxlY3Rpb25DaGFuZ2VkXG4gICAgICAucGlwZSh1bnRpbERlc3Ryb3llZCh0aGlzKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5faXNDb21wbGV0ZS5zZXQodGhpcy5sb2NhbFNlbGVjdGlvbk1vZGVsLmlzQ29tcGxldGUoKSkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVSaWdodENhbGVuZGFyUHJldmlld0NoYW5nZSgpOiB2b2lkIHtcbiAgICBjb25zdCB2aWV3Q2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgICB0aGlzLnJpZ2h0Q2FsZW5kYXIudmlld0NoYW5nZWRcbiAgICAgIC5waXBlKHVudGlsRGVzdHJveWVkKHRoaXMpKVxuICAgICAgLnBpcGUodGFwKCgpID0+IHZpZXdDaGFuZ2VkLm5leHQoKSkpXG4gICAgICAucGlwZShzdGFydFdpdGgodGhpcy5yaWdodENhbGVuZGFyLmN1cnJlbnRWaWV3KSlcbiAgICAgIC5zdWJzY3JpYmUoKHZpZXc6IE1hdENhbGVuZGFyVmlldykgPT4ge1xuICAgICAgICBpZiAodmlldyAhPT0gJ21vbnRoJykgcmV0dXJuO1xuXG4gICAgICAgIHRoaXMucmlnaHRDYWxlbmRhci5tb250aFZpZXcuX21hdENhbGVuZGFyQm9keS5wcmV2aWV3Q2hhbmdlXG4gICAgICAgICAgLnBpcGUodGFrZVVudGlsKHZpZXdDaGFuZ2VkKSwgdW50aWxEZXN0cm95ZWQodGhpcykpXG4gICAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5sZWZ0Q2FsZW5kYXIuY3VycmVudFZpZXcgIT09ICdtb250aCcgfHwgIXRoaXMubGVmdENhbGVuZGFyLm1vbnRoVmlldy5fcmFuZ2VTdGFydCkgcmV0dXJuO1xuXG4gICAgICAgICAgICB0aGlzLmxlZnRDYWxlbmRhci5tb250aFZpZXcuX3ByZXZpZXdTdGFydCA9IHRoaXMucmlnaHRDYWxlbmRhci5tb250aFZpZXcuX3ByZXZpZXdTdGFydDtcblxuICAgICAgICAgICAgdGhpcy5sZWZ0Q2FsZW5kYXIubW9udGhWaWV3Ll9wcmV2aWV3RW5kID0gdGhpcy5yaWdodENhbGVuZGFyLm1vbnRoVmlldy5fcHJldmlld0VuZDtcblxuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ2VsbCA9IHRoaXMubGVmdENhbGVuZGFyQWN0aXZlQ2VsbDtcblxuICAgICAgICAgICAgaWYgKGFjdGl2ZUNlbGwgJiYgYWN0aXZlQ2VsbCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkgYWN0aXZlQ2VsbC5ibHVyKCk7XG5cbiAgICAgICAgICAgIHRoaXMubGVmdENhbGVuZGFyLm1vbnRoVmlldy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cIndsY20tZGF0ZS1yYW5nZS1waWNrZXItcGFuZWxcIj5cbiAgPGRpdiBjbGFzcz1cIndsY20tZGF0ZS1yYW5nZS1waWNrZXItYm9keVwiPlxuICAgIDxtYXQtY2FsZW5kYXJcbiAgICAgIHdsY21DYWxlbmRhclxuICAgICAgd2xjbUxlZnRDYWxlbmRhclxuICAgICAgW3NlbGVjdGVkXT1cInNlbGVjdGVkXCJcbiAgICAgIFtkaXNhYmxlZF09XCJyaWdodENhbGVuZGFyWWVhclZpZXdBY3RpdmF0ZWQoKVwiXG4gICAgICBbaGVhZGVyQ29tcG9uZW50XT1cImhlYWRlckNvbXBvbmVudFwiXG4gICAgICAoX3VzZXJTZWxlY3Rpb24pPVwiY2FsZW5kYXJTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAoX3VzZXJEcmFnRHJvcCk9XCJjYWxlbmRhckRyYWdEcm9wKCRldmVudClcIlxuICAgICAgKGRhdGVDaGFuZ2UpPVwic3RhcnREYXRlLnNldCgkZXZlbnQpXCJcbiAgICA+PC9tYXQtY2FsZW5kYXI+XG5cbiAgICA8bWF0LWNhbGVuZGFyXG4gICAgICB3bGNtQ2FsZW5kYXJcbiAgICAgIHdsY21SaWdodENhbGVuZGFyXG4gICAgICBbc2VsZWN0ZWRdPVwic2VsZWN0ZWRcIlxuICAgICAgW2Rpc2FibGVkXT1cImxlZnRDYWxlbmRhclllYXJWaWV3QWN0aXZhdGVkKClcIlxuICAgICAgW2hlYWRlckNvbXBvbmVudF09XCJoZWFkZXJDb21wb25lbnRcIlxuICAgICAgKF91c2VyU2VsZWN0aW9uKT1cImNhbGVuZGFyU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgKF91c2VyRHJhZ0Ryb3ApPVwiY2FsZW5kYXJEcmFnRHJvcCgkZXZlbnQpXCJcbiAgICAgIChkYXRlQ2hhbmdlKT1cInN0YXJ0RGF0ZS5zZXQoJGV2ZW50KVwiXG4gICAgPjwvbWF0LWNhbGVuZGFyPlxuICA8L2Rpdj5cblxuICA8d2xjbS1kYXRlLXJhbmdlLXBpY2tlci1ib3R0b20tcGFuZWw+PC93bGNtLWRhdGUtcmFuZ2UtcGlja2VyLWJvdHRvbS1wYW5lbD5cbjwvZGl2PlxuIl19