valtech-components 2.0.565 → 2.0.567

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 (68) hide show
  1. package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +51 -14
  2. package/esm2022/lib/components/atoms/fab/fab.component.mjs +63 -25
  3. package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +64 -19
  4. package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +45 -18
  5. package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +55 -13
  6. package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +43 -15
  7. package/esm2022/lib/components/molecules/card/card.component.mjs +126 -83
  8. package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +52 -8
  9. package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +54 -37
  10. package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
  11. package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +62 -27
  12. package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
  13. package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
  14. package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +74 -46
  15. package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +2 -2
  16. package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +1 -1
  17. package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
  18. package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +95 -59
  19. package/esm2022/lib/components/molecules/pill/pill.component.mjs +61 -13
  20. package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
  21. package/esm2022/lib/components/molecules/rating/rating.component.mjs +60 -43
  22. package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +56 -26
  23. package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
  24. package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +52 -29
  25. package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
  26. package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +2 -2
  27. package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +67 -51
  28. package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +51 -23
  29. package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +59 -21
  30. package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
  31. package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +93 -59
  32. package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +49 -15
  33. package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -1
  34. package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
  35. package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
  36. package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +1 -1
  37. package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +2 -2
  38. package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
  39. package/fesm2022/valtech-components.mjs +1638 -837
  40. package/fesm2022/valtech-components.mjs.map +1 -1
  41. package/lib/components/atoms/avatar/avatar.component.d.ts +26 -5
  42. package/lib/components/atoms/fab/fab.component.d.ts +24 -5
  43. package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +21 -6
  44. package/lib/components/molecules/accordion/accordion.component.d.ts +10 -4
  45. package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
  46. package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +10 -4
  47. package/lib/components/molecules/card/card.component.d.ts +24 -5
  48. package/lib/components/molecules/check-input/check-input.component.d.ts +25 -4
  49. package/lib/components/molecules/chip-group/chip-group.component.d.ts +10 -4
  50. package/lib/components/molecules/date-input/date-input.component.d.ts +25 -7
  51. package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
  52. package/lib/components/molecules/glow-card/glow-card.component.d.ts +16 -5
  53. package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
  54. package/lib/components/molecules/phone-input/phone-input.component.d.ts +28 -5
  55. package/lib/components/molecules/pill/pill.component.d.ts +27 -3
  56. package/lib/components/molecules/rating/rating.component.d.ts +10 -4
  57. package/lib/components/molecules/searchbar/searchbar.component.d.ts +15 -11
  58. package/lib/components/molecules/searchbar/types.d.ts +33 -0
  59. package/lib/components/molecules/segment-control/segment-control.component.d.ts +17 -6
  60. package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
  61. package/lib/components/molecules/stats-card/stats-card.component.d.ts +10 -4
  62. package/lib/components/molecules/stepper/stepper.component.d.ts +20 -4
  63. package/lib/components/molecules/tabs/tabs.component.d.ts +27 -4
  64. package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
  65. package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -4
  66. package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +25 -4
  67. package/package.json +1 -1
  68. package/src/lib/components/styles/_docs-page.scss +310 -0
@@ -1,6 +1,7 @@
1
- import { Component, Input, Output, EventEmitter } from '@angular/core';
1
+ import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
2
2
  import { IonChip, IonIcon, IonLabel } from '@ionic/angular/standalone';
3
3
  import { CommonModule } from '@angular/common';
4
+ import { PresetService } from '../../../services/presets';
4
5
  import { addIcons } from 'ionicons';
5
6
  import { close, checkmark } from 'ionicons/icons';
6
7
  import * as i0 from "@angular/core";
@@ -9,7 +10,10 @@ addIcons({ close, checkmark });
9
10
  * val-chip-group
10
11
  *
11
12
  * A group of chips for tags, filters, or selections.
12
- * Supports single/multiple selection and removable chips.
13
+ * Supports presets for reusable configurations.
14
+ *
15
+ * @example With preset:
16
+ * <val-chip-group preset="tags" [props]="{ chips: [...] }"></val-chip-group>
13
17
  *
14
18
  * @example Basic selectable
15
19
  * <val-chip-group [props]="{
@@ -22,31 +26,42 @@ addIcons({ close, checkmark });
22
26
  * multiple: true
23
27
  * }" (selectionChange)="onSelectionChange($event)"></val-chip-group>
24
28
  *
25
- * @example Removable tags
26
- * <val-chip-group [props]="{
27
- * chips: [
28
- * { value: 'tag1', label: 'Tag 1', icon: 'pricetag' },
29
- * { value: 'tag2', label: 'Tag 2' }
30
- * ],
31
- * removable: true,
32
- * color: 'tertiary'
33
- * }" (chipRemove)="onChipRemove($event)"></val-chip-group>
34
- *
29
+ * @input preset: string - Name of preset to apply
35
30
  * @input props: ChipGroupMetadata - Configuration for the chip group
36
31
  * @output selectionChange: ChipSelectionEvent - Emits when selection changes
37
32
  * @output chipRemove: ChipRemoveEvent - Emits when a chip is removed
38
33
  */
39
34
  export class ChipGroupComponent {
40
35
  constructor() {
36
+ this.presets = inject(PresetService);
37
+ this.props = {};
38
+ this.resolvedProps = {};
41
39
  this.selectionChange = new EventEmitter();
42
40
  this.chipRemove = new EventEmitter();
43
41
  this.chipClick = new EventEmitter();
44
42
  }
43
+ ngOnInit() {
44
+ this.resolveProps();
45
+ }
46
+ ngOnChanges(changes) {
47
+ if (changes['preset'] || changes['props']) {
48
+ this.resolveProps();
49
+ }
50
+ }
51
+ resolveProps() {
52
+ const presetProps = this.preset
53
+ ? this.presets.get('chipGroup', this.preset)
54
+ : {};
55
+ this.resolvedProps = {
56
+ ...presetProps,
57
+ ...this.props,
58
+ };
59
+ }
45
60
  getChipColor(chip) {
46
- if (chip.selected && this.props.selectedColor) {
47
- return this.props.selectedColor;
61
+ if (chip.selected && this.resolvedProps.selectedColor) {
62
+ return this.resolvedProps.selectedColor;
48
63
  }
49
- return chip.color || this.props.color || 'primary';
64
+ return chip.color || this.resolvedProps.color || 'primary';
50
65
  }
51
66
  getChipLabel(chip) {
52
67
  return chip.label || chip.contentFallback || '';
@@ -55,14 +70,14 @@ export class ChipGroupComponent {
55
70
  if (chip.disabled)
56
71
  return;
57
72
  this.chipClick.emit(chip);
58
- if (!this.props.selectable)
73
+ if (!this.resolvedProps.selectable)
59
74
  return;
60
- if (this.props.multiple) {
75
+ if (this.resolvedProps.multiple) {
61
76
  chip.selected = !chip.selected;
62
77
  }
63
78
  else {
64
79
  // Single selection: deselect all others
65
- this.props.chips.forEach((c) => {
80
+ this.resolvedProps.chips.forEach((c) => {
66
81
  c.selected = c.value === chip.value ? !c.selected : false;
67
82
  });
68
83
  }
@@ -70,41 +85,41 @@ export class ChipGroupComponent {
70
85
  }
71
86
  onRemoveChip(event, chip) {
72
87
  event.stopPropagation();
73
- const index = this.props.chips.indexOf(chip);
88
+ const index = this.resolvedProps.chips.indexOf(chip);
74
89
  if (index > -1) {
75
- this.props.chips.splice(index, 1);
90
+ this.resolvedProps.chips.splice(index, 1);
76
91
  this.chipRemove.emit({
77
92
  chip,
78
- remaining: [...this.props.chips],
93
+ remaining: [...this.resolvedProps.chips],
79
94
  });
80
95
  }
81
96
  }
82
97
  emitSelectionChange() {
83
- const selected = this.props.chips.filter((c) => c.selected);
98
+ const selected = this.resolvedProps.chips.filter((c) => c.selected);
84
99
  const values = selected.map((c) => c.value);
85
100
  this.selectionChange.emit({
86
- selected: this.props.multiple ? selected : selected[0],
87
- values: this.props.multiple ? values : values[0],
101
+ selected: this.resolvedProps.multiple ? selected : selected[0],
102
+ values: this.resolvedProps.multiple ? values : values[0],
88
103
  });
89
104
  }
90
105
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
91
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipGroupComponent, isStandalone: true, selector: "val-chip-group", inputs: { props: "props" }, outputs: { selectionChange: "selectionChange", chipRemove: "chipRemove", chipClick: "chipClick" }, ngImport: i0, template: `
92
- <div class="chip-group" [class.wrap]="props.wrap !== false">
93
- @for (chip of props.chips; track chip.value) {
106
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ChipGroupComponent, isStandalone: true, selector: "val-chip-group", inputs: { preset: "preset", props: "props" }, outputs: { selectionChange: "selectionChange", chipRemove: "chipRemove", chipClick: "chipClick" }, usesOnChanges: true, ngImport: i0, template: `
107
+ <div class="chip-group" [class.wrap]="resolvedProps.wrap !== false">
108
+ @for (chip of resolvedProps.chips; track chip.value) {
94
109
  <ion-chip
95
110
  [color]="getChipColor(chip)"
96
- [outline]="props.outline && !chip.selected"
111
+ [outline]="resolvedProps.outline && !chip.selected"
97
112
  [disabled]="chip.disabled"
98
113
  (click)="onChipClick(chip)"
99
114
  >
100
115
  @if (chip.icon) {
101
116
  <ion-icon [name]="chip.icon"></ion-icon>
102
117
  }
103
- @if (chip.selected && props.selectable) {
118
+ @if (chip.selected && resolvedProps.selectable) {
104
119
  <ion-icon name="checkmark" class="selected-icon"></ion-icon>
105
120
  }
106
121
  <ion-label>{{ getChipLabel(chip) }}</ion-label>
107
- @if (props.removable && !chip.disabled) {
122
+ @if (resolvedProps.removable && !chip.disabled) {
108
123
  <ion-icon name="close" class="remove-icon" (click)="onRemoveChip($event, chip)"></ion-icon>
109
124
  }
110
125
  </ion-chip>
@@ -115,29 +130,31 @@ export class ChipGroupComponent {
115
130
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChipGroupComponent, decorators: [{
116
131
  type: Component,
117
132
  args: [{ selector: 'val-chip-group', standalone: true, imports: [CommonModule, IonChip, IonIcon, IonLabel], template: `
118
- <div class="chip-group" [class.wrap]="props.wrap !== false">
119
- @for (chip of props.chips; track chip.value) {
133
+ <div class="chip-group" [class.wrap]="resolvedProps.wrap !== false">
134
+ @for (chip of resolvedProps.chips; track chip.value) {
120
135
  <ion-chip
121
136
  [color]="getChipColor(chip)"
122
- [outline]="props.outline && !chip.selected"
137
+ [outline]="resolvedProps.outline && !chip.selected"
123
138
  [disabled]="chip.disabled"
124
139
  (click)="onChipClick(chip)"
125
140
  >
126
141
  @if (chip.icon) {
127
142
  <ion-icon [name]="chip.icon"></ion-icon>
128
143
  }
129
- @if (chip.selected && props.selectable) {
144
+ @if (chip.selected && resolvedProps.selectable) {
130
145
  <ion-icon name="checkmark" class="selected-icon"></ion-icon>
131
146
  }
132
147
  <ion-label>{{ getChipLabel(chip) }}</ion-label>
133
- @if (props.removable && !chip.disabled) {
148
+ @if (resolvedProps.removable && !chip.disabled) {
134
149
  <ion-icon name="close" class="remove-icon" (click)="onRemoveChip($event, chip)"></ion-icon>
135
150
  }
136
151
  </ion-chip>
137
152
  }
138
153
  </div>
139
154
  `, styles: [":host{display:block}.chip-group{display:flex;gap:8px}.chip-group.wrap{flex-wrap:wrap}.chip-group:not(.wrap){overflow-x:auto;padding-bottom:4px}.chip-group:not(.wrap)::-webkit-scrollbar{height:4px}.chip-group:not(.wrap)::-webkit-scrollbar-thumb{background:var(--ion-color-light-shade);border-radius:2px}ion-chip{margin:0;cursor:pointer;transition:transform .2s,box-shadow .2s}ion-chip:hover:not([disabled]){transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}ion-chip:active:not([disabled]){transform:translateY(0)}ion-chip[disabled]{opacity:.5;cursor:not-allowed}ion-chip ion-icon{font-size:16px}ion-chip .selected-icon{margin-right:4px}ion-chip .remove-icon{margin-left:4px;cursor:pointer;opacity:.7;transition:opacity .2s}ion-chip .remove-icon:hover{opacity:1}ion-chip ion-label{font-size:14px;font-weight:500}\n"] }]
140
- }], propDecorators: { props: [{
155
+ }], propDecorators: { preset: [{
156
+ type: Input
157
+ }], props: [{
141
158
  type: Input
142
159
  }], selectionChange: [{
143
160
  type: Output
@@ -146,4 +163,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
146
163
  }], chipClick: [{
147
164
  type: Output
148
165
  }] } });
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUNwQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOztBQUVsRCxRQUFRLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztBQStCL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQThCRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUE1RC9CO1FBK0RZLG9CQUFlLEdBQUcsSUFBSSxZQUFZLEVBQXNCLENBQUM7UUFDekQsZUFBVSxHQUFHLElBQUksWUFBWSxFQUFtQixDQUFDO1FBQ2pELGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztLQXNEeEQ7SUFwREMsWUFBWSxDQUFDLElBQWtCO1FBQzdCLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzlDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7UUFDbEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxTQUFT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eEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDaGlwR3JvdXBNZXRhZGF0YSwgQ2hpcE1ldGFkYXRhLCBDaGlwU2VsZWN0aW9uRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG9zZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNsb3NlLCBjaGVja21hcmsgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGlwLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGlwLWdyb3VwXCIgW2NsYXNzLndyYXBdPVwicHJvcHMud3JhcCAhPT0gZmFsc2VcIj5cbiAgICAgIEBmb3IgKGNoaXAgb2YgcHJvcHMuY2hpcHM7IHRyYWNrIGNoaXAudmFsdWUpIHtcbiAgICAgICAgPGlvbi1jaGlwXG4gICAgICAgICAgW2NvbG9yXT1cImdldENoaXBDb2xvcihjaGlwKVwiXG4gICAgICAgICAgW291dGxpbmVdPVwicHJvcHMub3V0bGluZSAmJiAhY2hpcC5zZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNoaXAuZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNoaXBDbGljayhjaGlwKVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGNoaXAuaWNvbikge1xuICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImNoaXAuaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY2hpcC5zZWxlY3RlZCAmJiBwcm9wcy5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNoZWNrbWFya1wiIGNsYXNzPVwic2VsZWN0ZWQtaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIDxpb24tbGFiZWw+e3sgZ2V0Q2hpcExhYmVsKGNoaXApIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgQGlmIChwcm9wcy5yZW1vdmFibGUgJiYgIWNoaXAuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBjbGFzcz1cInJlbW92ZS1pY29uXCIgKGNsaWNrKT1cIm9uUmVtb3ZlQ2hpcCgkZXZlbnQsIGNoaXApXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWNoaXA+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NoaXAtZ3JvdXAuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1jaGlwLWdyb3VwXG4gKlxuICogQSBncm91cCBvZiBjaGlwcyBmb3IgdGFncywgZmlsdGVycywgb3Igc2VsZWN0aW9ucy5cbiAqIFN1cHBvcnRzIHNpbmdsZS9tdWx0aXBsZSBzZWxlY3Rpb24gYW5kIHJlbW92YWJsZSBjaGlwcy5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyBzZWxlY3RhYmxlXG4gKiA8dmFsLWNoaXAtZ3JvdXAgW3Byb3BzXT1cIntcbiAqICAgY2hpcHM6IFtcbiAqICAgICB7IHZhbHVlOiAnYW5ndWxhcicsIGxhYmVsOiAnQW5ndWxhcicgfSxcbiAqICAgICB7IHZhbHVlOiAncmVhY3QnLCBsYWJlbDogJ1JlYWN0JyB9LFxuICogICAgIHsgdmFsdWU6ICd2dWUnLCBsYWJlbDogJ1Z1ZScgfVxuICogICBdLFxuICogICBzZWxlY3RhYmxlOiB0cnVlLFxuICogICBtdWx0aXBsZTogdHJ1ZVxuICogfVwiIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiPjwvdmFsLWNoaXAtZ3JvdXA+XG4gKlxuICogQGV4YW1wbGUgUmVtb3ZhYmxlIHRhZ3NcbiAqIDx2YWwtY2hpcC1ncm91cCBbcHJvcHNdPVwie1xuICogICBjaGlwczogW1xuICogICAgIHsgdmFsdWU6ICd0YWcxJywgbGFiZWw6ICdUYWcgMScsIGljb246ICdwcmljZXRhZycgfSxcbiAqICAgICB7IHZhbHVlOiAndGFnMicsIGxhYmVsOiAnVGFnIDInIH1cbiAqICAgXSxcbiAqICAgcmVtb3ZhYmxlOiB0cnVlLFxuICogICBjb2xvcjogJ3RlcnRpYXJ5J1xuICogfVwiIChjaGlwUmVtb3ZlKT1cIm9uQ2hpcFJlbW92ZSgkZXZlbnQpXCI+PC92YWwtY2hpcC1ncm91cD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IENoaXBHcm91cE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGNoaXAgZ3JvdXBcbiAqIEBvdXRwdXQgc2VsZWN0aW9uQ2hhbmdlOiBDaGlwU2VsZWN0aW9uRXZlbnQgLSBFbWl0cyB3aGVuIHNlbGVjdGlvbiBjaGFuZ2VzXG4gKiBAb3V0cHV0IGNoaXBSZW1vdmU6IENoaXBSZW1vdmVFdmVudCAtIEVtaXRzIHdoZW4gYSBjaGlwIGlzIHJlbW92ZWRcbiAqL1xuZXhwb3J0IGNsYXNzIENoaXBHcm91cENvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb3BzOiBDaGlwR3JvdXBNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwU2VsZWN0aW9uRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjaGlwUmVtb3ZlID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwUmVtb3ZlRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBjaGlwQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPENoaXBNZXRhZGF0YT4oKTtcblxuICBnZXRDaGlwQ29sb3IoY2hpcDogQ2hpcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICBpZiAoY2hpcC5zZWxlY3RlZCAmJiB0aGlzLnByb3BzLnNlbGVjdGVkQ29sb3IpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnNlbGVjdGVkQ29sb3I7XG4gICAgfVxuICAgIHJldHVybiBjaGlwLmNvbG9yIHx8IHRoaXMucHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknO1xuICB9XG5cbiAgZ2V0Q2hpcExhYmVsKGNoaXA6IENoaXBNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoaXAubGFiZWwgfHwgY2hpcC5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBvbkNoaXBDbGljayhjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAoY2hpcC5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jaGlwQ2xpY2suZW1pdChjaGlwKTtcblxuICAgIGlmICghdGhpcy5wcm9wcy5zZWxlY3RhYmxlKSByZXR1cm47XG5cbiAgICBpZiAodGhpcy5wcm9wcy5tdWx0aXBsZSkge1xuICAgICAgY2hpcC5zZWxlY3RlZCA9ICFjaGlwLnNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaW5nbGUgc2VsZWN0aW9uOiBkZXNlbGVjdCBhbGwgb3RoZXJzXG4gICAgICB0aGlzLnByb3BzLmNoaXBzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgYy5zZWxlY3RlZCA9IGMudmFsdWUgPT09IGNoaXAudmFsdWUgPyAhYy5zZWxlY3RlZCA6IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCk7XG4gIH1cblxuICBvblJlbW92ZUNoaXAoZXZlbnQ6IEV2ZW50LCBjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5wcm9wcy5jaGlwcy5pbmRleE9mKGNoaXApO1xuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICB0aGlzLnByb3BzLmNoaXBzLnNwbGljZShpbmRleCwgMSk7XG4gICAgICB0aGlzLmNoaXBSZW1vdmUuZW1pdCh7XG4gICAgICAgIGNoaXAsXG4gICAgICAgIHJlbWFpbmluZzogWy4uLnRoaXMucHJvcHMuY2hpcHNdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5wcm9wcy5jaGlwcy5maWx0ZXIoKGMpID0+IGMuc2VsZWN0ZWQpO1xuICAgIGNvbnN0IHZhbHVlcyA9IHNlbGVjdGVkLm1hcCgoYykgPT4gYy52YWx1ZSk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgIHNlbGVjdGVkOiB0aGlzLnByb3BzLm11bHRpcGxlID8gc2VsZWN0ZWQgOiBzZWxlY3RlZFswXSxcbiAgICAgIHZhbHVlczogdGhpcy5wcm9wcy5tdWx0aXBsZSA/IHZhbHVlcyA6IHZhbHVlc1swXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1ncm91cC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NoaXAtZ3JvdXAvY2hpcC1ncm91cC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsWUFBWSxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTFELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFbEQsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7QUErQi9COzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F3Qkc7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBdEQvQjtRQXVEVSxZQUFPLEdBQUcsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRy9CLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRWhELGtCQUFhLEdBQXNCLEVBQXVCLENBQUM7UUFFakQsb0JBQWUsR0FBRyxJQUFJLFlBQVksRUFBc0IsQ0FBQztRQUN6RCxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7UUFDakQsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFnQixDQUFDO0tBMkV4RDtJQXpFQyxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxX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LEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFNUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUM7WUFDeEIsUUFBUSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUQsTUFBTSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDekQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FwRlUsa0JBQWtCO21HQUFsQixrQkFBa0IsZ1BBbERuQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXNCVCw2M0JBdkJTLFlBQVksK0JBQUUsT0FBTyx1R0FBRSxPQUFPLDJKQUFFLFFBQVE7OzRGQW1EdkMsa0JBQWtCO2tCQXREOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsWUFDekM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQlQ7OEJBK0JRLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUksZUFBZTtzQkFBeEIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWwgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBQcmVzZXRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvcHJlc2V0cyc7XG5pbXBvcnQgeyBDaGlwR3JvdXBNZXRhZGF0YSwgQ2hpcE1ldGFkYXRhLCBDaGlwU2VsZWN0aW9uRXZlbnQsIENoaXBSZW1vdmVFdmVudCB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG9zZSwgY2hlY2ttYXJrIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5hZGRJY29ucyh7IGNsb3NlLCBjaGVja21hcmsgfSk7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1jaGlwLWdyb3VwJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSW9uQ2hpcCwgSW9uSWNvbiwgSW9uTGFiZWxdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXYgY2xhc3M9XCJjaGlwLWdyb3VwXCIgW2NsYXNzLndyYXBdPVwicmVzb2x2ZWRQcm9wcy53cmFwICE9PSBmYWxzZVwiPlxuICAgICAgQGZvciAoY2hpcCBvZiByZXNvbHZlZFByb3BzLmNoaXBzOyB0cmFjayBjaGlwLnZhbHVlKSB7XG4gICAgICAgIDxpb24tY2hpcFxuICAgICAgICAgIFtjb2xvcl09XCJnZXRDaGlwQ29sb3IoY2hpcClcIlxuICAgICAgICAgIFtvdXRsaW5lXT1cInJlc29sdmVkUHJvcHMub3V0bGluZSAmJiAhY2hpcC5zZWxlY3RlZFwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImNoaXAuZGlzYWJsZWRcIlxuICAgICAgICAgIChjbGljayk9XCJvbkNoaXBDbGljayhjaGlwKVwiXG4gICAgICAgID5cbiAgICAgICAgICBAaWYgKGNoaXAuaWNvbikge1xuICAgICAgICAgICAgPGlvbi1pY29uIFtuYW1lXT1cImNoaXAuaWNvblwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoY2hpcC5zZWxlY3RlZCAmJiByZXNvbHZlZFByb3BzLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrXCIgY2xhc3M9XCJzZWxlY3RlZC1pY29uXCI+PC9pb24taWNvbj5cbiAgICAgICAgICB9XG4gICAgICAgICAgPGlvbi1sYWJlbD57eyBnZXRDaGlwTGFiZWwoY2hpcCkgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICBAaWYgKHJlc29sdmVkUHJvcHMucmVtb3ZhYmxlICYmICFjaGlwLmRpc2FibGVkKSB7XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgY2xhc3M9XCJyZW1vdmUtaWNvblwiIChjbGljayk9XCJvblJlbW92ZUNoaXAoJGV2ZW50LCBjaGlwKVwiPjwvaW9uLWljb24+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1jaGlwPlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9jaGlwLWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtY2hpcC1ncm91cFxuICpcbiAqIEEgZ3JvdXAgb2YgY2hpcHMgZm9yIHRhZ3MsIGZpbHRlcnMsIG9yIHNlbGVjdGlvbnMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldDpcbiAqIDx2YWwtY2hpcC1ncm91cCBwcmVzZXQ9XCJ0YWdzXCIgW3Byb3BzXT1cInsgY2hpcHM6IFsuLi5dIH1cIj48L3ZhbC1jaGlwLWdyb3VwPlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHNlbGVjdGFibGVcbiAqIDx2YWwtY2hpcC1ncm91cCBbcHJvcHNdPVwie1xuICogICBjaGlwczogW1xuICogICAgIHsgdmFsdWU6ICdhbmd1bGFyJywgbGFiZWw6ICdBbmd1bGFyJyB9LFxuICogICAgIHsgdmFsdWU6ICdyZWFjdCcsIGxhYmVsOiAnUmVhY3QnIH0sXG4gKiAgICAgeyB2YWx1ZTogJ3Z1ZScsIGxhYmVsOiAnVnVlJyB9XG4gKiAgIF0sXG4gKiAgIHNlbGVjdGFibGU6IHRydWUsXG4gKiAgIG11bHRpcGxlOiB0cnVlXG4gKiB9XCIgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCI+PC92YWwtY2hpcC1ncm91cD5cbiAqXG4gKiBAaW5wdXQgcHJlc2V0OiBzdHJpbmcgLSBOYW1lIG9mIHByZXNldCB0byBhcHBseVxuICogQGlucHV0IHByb3BzOiBDaGlwR3JvdXBNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBjaGlwIGdyb3VwXG4gKiBAb3V0cHV0IHNlbGVjdGlvbkNoYW5nZTogQ2hpcFNlbGVjdGlvbkV2ZW50IC0gRW1pdHMgd2hlbiBzZWxlY3Rpb24gY2hhbmdlc1xuICogQG91dHB1dCBjaGlwUmVtb3ZlOiBDaGlwUmVtb3ZlRXZlbnQgLSBFbWl0cyB3aGVuIGEgY2hpcCBpcyByZW1vdmVkXG4gKi9cbmV4cG9ydCBjbGFzcyBDaGlwR3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIHByaXZhdGUgcHJlc2V0cyA9IGluamVjdChQcmVzZXRTZXJ2aWNlKTtcblxuICBASW5wdXQoKSBwcmVzZXQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHByb3BzOiBQYXJ0aWFsPENoaXBHcm91cE1ldGFkYXRhPiA9IHt9O1xuXG4gIHJlc29sdmVkUHJvcHM6IENoaXBHcm91cE1ldGFkYXRhID0ge30gYXMgQ2hpcEdyb3VwTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcFNlbGVjdGlvbkV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2hpcFJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXI8Q2hpcFJlbW92ZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgY2hpcENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxDaGlwTWV0YWRhdGE+KCk7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVQcm9wcygpOiB2b2lkIHtcbiAgICBjb25zdCBwcmVzZXRQcm9wcyA9IHRoaXMucHJlc2V0XG4gICAgICA/ICh0aGlzLnByZXNldHMuZ2V0KCdjaGlwR3JvdXAnLCB0aGlzLnByZXNldCkgYXMgUGFydGlhbDxDaGlwR3JvdXBNZXRhZGF0YT4pXG4gICAgICA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgQ2hpcEdyb3VwTWV0YWRhdGE7XG4gIH1cblxuICBnZXRDaGlwQ29sb3IoY2hpcDogQ2hpcE1ldGFkYXRhKTogc3RyaW5nIHtcbiAgICBpZiAoY2hpcC5zZWxlY3RlZCAmJiB0aGlzLnJlc29sdmVkUHJvcHMuc2VsZWN0ZWRDb2xvcikge1xuICAgICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcy5zZWxlY3RlZENvbG9yO1xuICAgIH1cbiAgICByZXR1cm4gY2hpcC5jb2xvciB8fCB0aGlzLnJlc29sdmVkUHJvcHMuY29sb3IgfHwgJ3ByaW1hcnknO1xuICB9XG5cbiAgZ2V0Q2hpcExhYmVsKGNoaXA6IENoaXBNZXRhZGF0YSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGNoaXAubGFiZWwgfHwgY2hpcC5jb250ZW50RmFsbGJhY2sgfHwgJyc7XG4gIH1cblxuICBvbkNoaXBDbGljayhjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBpZiAoY2hpcC5kaXNhYmxlZCkgcmV0dXJuO1xuXG4gICAgdGhpcy5jaGlwQ2xpY2suZW1pdChjaGlwKTtcblxuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLnNlbGVjdGFibGUpIHJldHVybjtcblxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMubXVsdGlwbGUpIHtcbiAgICAgIGNoaXAuc2VsZWN0ZWQgPSAhY2hpcC5zZWxlY3RlZDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gU2luZ2xlIHNlbGVjdGlvbjogZGVzZWxlY3QgYWxsIG90aGVyc1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLmZvckVhY2goKGMpID0+IHtcbiAgICAgICAgYy5zZWxlY3RlZCA9IGMudmFsdWUgPT09IGNoaXAudmFsdWUgPyAhYy5zZWxlY3RlZCA6IGZhbHNlO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5lbWl0U2VsZWN0aW9uQ2hhbmdlKCk7XG4gIH1cblxuICBvblJlbW92ZUNoaXAoZXZlbnQ6IEV2ZW50LCBjaGlwOiBDaGlwTWV0YWRhdGEpOiB2b2lkIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLmluZGV4T2YoY2hpcCk7XG4gICAgaWYgKGluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jaGlwcy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgICAgdGhpcy5jaGlwUmVtb3ZlLmVtaXQoe1xuICAgICAgICBjaGlwLFxuICAgICAgICByZW1haW5pbmc6IFsuLi50aGlzLnJlc29sdmVkUHJvcHMuY2hpcHNdLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBlbWl0U2VsZWN0aW9uQ2hhbmdlKCk6IHZvaWQge1xuICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5yZXNvbHZlZFByb3BzLmNoaXBzLmZpbHRlcigoYykgPT4gYy5zZWxlY3RlZCk7XG4gICAgY29uc3QgdmFsdWVzID0gc2VsZWN0ZWQubWFwKChjKSA9PiBjLnZhbHVlKTtcblxuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgc2VsZWN0ZWQ6IHRoaXMucmVzb2x2ZWRQcm9wcy5tdWx0aXBsZSA/IHNlbGVjdGVkIDogc2VsZWN0ZWRbMF0sXG4gICAgICB2YWx1ZXM6IHRoaXMucmVzb2x2ZWRQcm9wcy5tdWx0aXBsZSA/IHZhbHVlcyA6IHZhbHVlc1swXSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -409,7 +409,7 @@ export class CommentComponent {
409
409
  </div>
410
410
  }
411
411
  </div>
412
- `, isInline: true, styles: [":host{display:block}.comment{--indent-size: 24px;--max-indent: 72px;padding:12px 0}.comment.highlighted{background-color:rgba(var(--ion-color-primary-rgb),.08);border-radius:8px;padding:12px;margin:-4px}.comment.pinned{border-left:3px solid var(--ion-color-primary);padding-left:12px}.comment.collapsed{opacity:.7}.pinned-indicator{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--ion-color-primary);margin-bottom:8px;padding-left:44px}.pinned-indicator ion-icon{font-size:14px}.comment-main{display:flex;gap:12px}.comment-avatar{flex-shrink:0;cursor:pointer}.comment-avatar val-avatar{--size: 36px}.comment-avatar .avatar-placeholder{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--ion-color-primary),var(--ion-color-secondary));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600}.comment-body{flex:1;min-width:0}.comment-header{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:4px}.author-info{display:flex;align-items:center;gap:4px;cursor:pointer}.author-info:hover .author-name{text-decoration:underline}.author-name{font-weight:600;font-size:14px;color:var(--ion-text-color)}.verified-badge{color:var(--ion-color-primary);font-size:16px}.author-username{font-size:13px;color:var(--ion-color-medium)}.comment-meta{display:flex;align-items:center;gap:6px;margin-left:auto}.timestamp{font-size:12px;color:var(--ion-color-medium)}.edited-label{font-size:11px;color:var(--ion-color-medium);font-style:italic}.more-button{--padding-start: 4px;--padding-end: 4px;margin:0;height:28px}.more-button ion-icon{font-size:18px;color:var(--ion-color-medium)}.menu-divider{height:1px;background-color:var(--ion-color-light);margin:4px 0}.comment-content{font-size:14px;line-height:1.5;color:var(--ion-text-color);word-wrap:break-word;overflow-wrap:break-word}.comment-content :global(.comment-link){color:var(--ion-color-primary);text-decoration:none}.comment-content :global(.comment-link):hover{text-decoration:underline}.comment-content :global(.comment-mention){color:var(--ion-color-primary);font-weight:500;cursor:pointer}.comment-content :global(.comment-mention):hover{text-decoration:underline}.comment-content :global(.comment-hashtag){color:var(--ion-color-primary);cursor:pointer}.comment-content :global(.comment-hashtag):hover{text-decoration:underline}.comment-reactions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.reaction-button{display:flex;align-items:center;gap:4px;background:none;border:none;padding:4px 8px;border-radius:16px;cursor:pointer;font-size:13px;color:var(--reaction-color, var(--ion-color-medium));transition:all .2s ease;background-color:transparent}.reaction-button:hover{background-color:rgba(var(--ion-color-medium-rgb),.1)}.reaction-button.active{background-color:rgba(var(--ion-color-primary-rgb),.1)}.reaction-button.active ion-icon{transform:scale(1.1)}.reaction-button ion-icon{font-size:18px;transition:transform .2s ease}.reaction-button .reaction-count{font-weight:500}.comment-actions{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;margin-left:-8px}.comment-actions ion-button{--padding-start: 8px;--padding-end: 8px;font-size:13px;height:32px;text-transform:none;font-weight:500}.expand-button,.collapse-button,.load-more-button,.view-replies-button{display:flex;align-items:center;gap:6px;background:none;border:none;padding:8px 12px;cursor:pointer;font-size:13px;color:var(--ion-color-primary);border-radius:8px;transition:background-color .2s}.expand-button:hover,.collapse-button:hover,.load-more-button:hover,.view-replies-button:hover{background-color:rgba(var(--ion-color-primary-rgb),.1)}.expand-button ion-icon,.collapse-button ion-icon,.load-more-button ion-icon,.view-replies-button ion-icon{font-size:16px}.expand-button{margin-top:4px;color:var(--ion-color-medium)}.comment-children{margin-top:12px;padding-left:min(var(--indent-size),var(--max-indent));border-left:2px solid var(--ion-color-light-shade)}.comment-children val-comment{display:block}.comment-children val-comment:first-of-type .comment{padding-top:0}.load-more-button,.view-replies-button{margin-top:8px;margin-left:0}ion-popover{--width: 200px}ion-popover ion-list{padding:4px 0}ion-popover ion-item{--min-height: 40px;--padding-start: 12px;font-size:14px}ion-popover ion-item ion-icon{font-size:18px;margin-right:8px}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 2px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 2px);height:max(28px,36px - 2px);font-size:max(11px,14px - 1px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 4px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 4px);height:max(28px,36px - 4px);font-size:max(11px,14px - 2px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 6px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 6px);height:max(28px,36px - 6px);font-size:max(11px,14px - 3px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 8px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 8px);height:max(28px,36px - 8px);font-size:max(11px,14px - 4px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 10px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 10px);height:max(28px,36px - 10px);font-size:max(11px,14px - 5px)}@media (prefers-color-scheme: dark){.comment.highlighted{background-color:rgba(var(--ion-color-primary-rgb),.12)}.avatar-placeholder{background:linear-gradient(135deg,var(--ion-color-primary-shade),var(--ion-color-secondary-shade))}}\n"], dependencies: [{ kind: "component", type: CommentComponent, selector: "val-comment", inputs: ["props"], outputs: ["authorClick", "reactionClick", "actionClick", "menuItemClick", "loadMoreClick", "collapseToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: AvatarComponent, selector: "val-avatar", inputs: ["props"], outputs: ["onClick"] }] }); }
412
+ `, isInline: true, styles: [":host{display:block}.comment{--indent-size: 24px;--max-indent: 72px;padding:12px 0}.comment.highlighted{background-color:rgba(var(--ion-color-primary-rgb),.08);border-radius:8px;padding:12px;margin:-4px}.comment.pinned{border-left:3px solid var(--ion-color-primary);padding-left:12px}.comment.collapsed{opacity:.7}.pinned-indicator{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--ion-color-primary);margin-bottom:8px;padding-left:44px}.pinned-indicator ion-icon{font-size:14px}.comment-main{display:flex;gap:12px}.comment-avatar{flex-shrink:0;cursor:pointer}.comment-avatar val-avatar{--size: 36px}.comment-avatar .avatar-placeholder{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,var(--ion-color-primary),var(--ion-color-secondary));display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px;font-weight:600}.comment-body{flex:1;min-width:0}.comment-header{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:4px}.author-info{display:flex;align-items:center;gap:4px;cursor:pointer}.author-info:hover .author-name{text-decoration:underline}.author-name{font-weight:600;font-size:14px;color:var(--ion-text-color)}.verified-badge{color:var(--ion-color-primary);font-size:16px}.author-username{font-size:13px;color:var(--ion-color-medium)}.comment-meta{display:flex;align-items:center;gap:6px;margin-left:auto}.timestamp{font-size:12px;color:var(--ion-color-medium)}.edited-label{font-size:11px;color:var(--ion-color-medium);font-style:italic}.more-button{--padding-start: 4px;--padding-end: 4px;margin:0;height:28px}.more-button ion-icon{font-size:18px;color:var(--ion-color-medium)}.menu-divider{height:1px;background-color:var(--ion-color-light);margin:4px 0}.comment-content{font-size:14px;line-height:1.5;color:var(--ion-text-color);word-wrap:break-word;overflow-wrap:break-word}.comment-content :global(.comment-link){color:var(--ion-color-primary);text-decoration:none}.comment-content :global(.comment-link):hover{text-decoration:underline}.comment-content :global(.comment-mention){color:var(--ion-color-primary);font-weight:500;cursor:pointer}.comment-content :global(.comment-mention):hover{text-decoration:underline}.comment-content :global(.comment-hashtag){color:var(--ion-color-primary);cursor:pointer}.comment-content :global(.comment-hashtag):hover{text-decoration:underline}.comment-reactions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.reaction-button{display:flex;align-items:center;gap:4px;background:none;border:none;padding:4px 8px;border-radius:16px;cursor:pointer;font-size:13px;color:var(--reaction-color, var(--ion-color-medium));transition:all .2s ease;background-color:transparent}.reaction-button:hover{background-color:rgba(var(--ion-color-medium-rgb),.1)}.reaction-button.active{background-color:rgba(var(--ion-color-primary-rgb),.1)}.reaction-button.active ion-icon{transform:scale(1.1)}.reaction-button ion-icon{font-size:18px;transition:transform .2s ease}.reaction-button .reaction-count{font-weight:500}.comment-actions{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;margin-left:-8px}.comment-actions ion-button{--padding-start: 8px;--padding-end: 8px;font-size:13px;height:32px;text-transform:none;font-weight:500}.expand-button,.collapse-button,.load-more-button,.view-replies-button{display:flex;align-items:center;gap:6px;background:none;border:none;padding:8px 12px;cursor:pointer;font-size:13px;color:var(--ion-color-primary);border-radius:8px;transition:background-color .2s}.expand-button:hover,.collapse-button:hover,.load-more-button:hover,.view-replies-button:hover{background-color:rgba(var(--ion-color-primary-rgb),.1)}.expand-button ion-icon,.collapse-button ion-icon,.load-more-button ion-icon,.view-replies-button ion-icon{font-size:16px}.expand-button{margin-top:4px;color:var(--ion-color-medium)}.comment-children{margin-top:12px;padding-left:min(var(--indent-size),var(--max-indent));border-left:2px solid var(--ion-color-light-shade)}.comment-children val-comment{display:block}.comment-children val-comment:first-of-type .comment{padding-top:0}.load-more-button,.view-replies-button{margin-top:8px;margin-left:0}ion-popover{--width: 200px}ion-popover ion-list{padding:4px 0}ion-popover ion-item{--min-height: 40px;--padding-start: 12px;font-size:14px}ion-popover ion-item ion-icon{font-size:18px;margin-right:8px}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 2px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 2px);height:max(28px,36px - 2px);font-size:max(11px,14px - 1px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 4px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 4px);height:max(28px,36px - 4px);font-size:max(11px,14px - 2px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 6px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 6px);height:max(28px,36px - 6px);font-size:max(11px,14px - 3px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 8px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 8px);height:max(28px,36px - 8px);font-size:max(11px,14px - 4px)}:host-context(val-comment) .comment-avatar val-avatar{--size: max(28px, 36px - 10px)}:host-context(val-comment) .comment-avatar .avatar-placeholder{width:max(28px,36px - 10px);height:max(28px,36px - 10px);font-size:max(11px,14px - 5px)}@media (prefers-color-scheme: dark){.comment.highlighted{background-color:rgba(var(--ion-color-primary-rgb),.12)}.avatar-placeholder{background:linear-gradient(135deg,var(--ion-color-primary-shade),var(--ion-color-secondary-shade))}}\n"], dependencies: [{ kind: "component", type: CommentComponent, selector: "val-comment", inputs: ["props"], outputs: ["authorClick", "reactionClick", "actionClick", "menuItemClick", "loadMoreClick", "collapseToggle"] }, { kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonPopover, selector: "ion-popover" }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: AvatarComponent, selector: "val-avatar", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
413
413
  }
414
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: CommentComponent, decorators: [{
415
415
  type: Component,
@@ -3,6 +3,7 @@ import { Component, inject, Input } from '@angular/core';
3
3
  import { ReactiveFormsModule } from '@angular/forms';
4
4
  import { IonDatetime, IonDatetimeButton, IonModal } from '@ionic/angular/standalone';
5
5
  import { I18nService } from '../../../services/i18n';
6
+ import { PresetService } from '../../../services/presets';
6
7
  import * as i0 from "@angular/core";
7
8
  import * as i1 from "@angular/forms";
8
9
  /**
@@ -16,53 +17,85 @@ import * as i1 from "@angular/forms";
16
17
  * @input props: DateInputMetadata - Configuration for the date input (form control, hint, etc.)
17
18
  */
18
19
  export class DateInputComponent {
20
+ constructor() {
21
+ this.i18n = inject(I18nService);
22
+ this.presets = inject(PresetService);
23
+ /**
24
+ * Input configuration object. Values here override preset values.
25
+ * @type {DateInputMetadata}
26
+ * @property control - The Angular FormControl for the date input.
27
+ * @property hint - The hint text for the input.
28
+ */
29
+ this.props = {};
30
+ /**
31
+ * Resolved props after merging preset + explicit props.
32
+ */
33
+ this.resolvedProps = {};
34
+ }
19
35
  /** Done button text - from props or i18n default */
20
36
  get doneText() {
21
- return this.props?.doneText || this.i18n.t('ok');
37
+ return this.resolvedProps?.doneText || this.i18n.t('ok');
22
38
  }
23
39
  /** Cancel button text - from props or i18n default */
24
40
  get cancelText() {
25
- return this.props?.cancelText || this.i18n.t('cancel');
26
- }
27
- constructor() {
28
- this.i18n = inject(I18nService);
41
+ return this.resolvedProps?.cancelText || this.i18n.t('cancel');
29
42
  }
30
43
  ngOnInit() {
31
- // Apply default values on initialization
32
- if (this.props?.withDefault || this.props?.value) {
44
+ this.resolveProps();
45
+ this.applyDefaultValue();
46
+ }
47
+ ngOnChanges(changes) {
48
+ if (changes['preset'] || changes['props']) {
49
+ this.resolveProps();
33
50
  this.applyDefaultValue();
34
51
  }
35
52
  }
53
+ /**
54
+ * Merge preset configuration with explicit props.
55
+ * Explicit props take precedence over preset values.
56
+ */
57
+ resolveProps() {
58
+ const presetProps = this.preset
59
+ ? this.presets.get('dateInput', this.preset)
60
+ : {};
61
+ this.resolvedProps = {
62
+ ...presetProps,
63
+ ...this.props,
64
+ };
65
+ }
36
66
  applyDefaultValue() {
37
- if (!this.props.control)
67
+ if (!this.resolvedProps.control)
68
+ return;
69
+ // Only apply if withDefault or value is set
70
+ if (!this.resolvedProps.withDefault && !this.resolvedProps.value)
38
71
  return;
39
72
  let defaultValue = null;
40
73
  // Explicit value takes precedence
41
- if (this.props.value) {
42
- defaultValue = new Date(this.props.value).toISOString();
74
+ if (this.resolvedProps.value) {
75
+ defaultValue = new Date(this.resolvedProps.value).toISOString();
43
76
  }
44
- else if (typeof this.props.withDefault === 'string') {
45
- defaultValue = new Date(this.props.withDefault).toISOString();
77
+ else if (typeof this.resolvedProps.withDefault === 'string') {
78
+ defaultValue = new Date(this.resolvedProps.withDefault).toISOString();
46
79
  }
47
- else if (this.props.withDefault === true) {
80
+ else if (this.resolvedProps.withDefault === true) {
48
81
  defaultValue = new Date().toISOString();
49
82
  }
50
83
  if (defaultValue) {
51
- this.props.control.setValue(defaultValue);
52
- this.props.control.markAsPristine();
53
- this.props.control.updateValueAndValidity();
84
+ this.resolvedProps.control.setValue(defaultValue);
85
+ this.resolvedProps.control.markAsPristine();
86
+ this.resolvedProps.control.updateValueAndValidity();
54
87
  }
55
88
  }
56
89
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: DateInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateInputComponent, isStandalone: true, selector: "val-date-input", inputs: { props: "props" }, ngImport: i0, template: `
90
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: DateInputComponent, isStandalone: true, selector: "val-date-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: `
58
91
  <div class="button-container">
59
- <ion-datetime-button class="action" [datetime]="props.token"></ion-datetime-button>
92
+ <ion-datetime-button class="action" [datetime]="resolvedProps.token"></ion-datetime-button>
60
93
  </div>
61
94
  <ion-modal [keepContentsMounted]="true">
62
95
  <ng-template>
63
96
  <ion-datetime
64
- [formControl]="props.control"
65
- [id]="props.token"
97
+ [formControl]="resolvedProps.control"
98
+ [id]="resolvedProps.token"
66
99
  presentation="date"
67
100
  locale="es-ES"
68
101
  [firstDayOfWeek]="1"
@@ -74,7 +107,7 @@ export class DateInputComponent {
74
107
  time: { timeStyle: 'short' }
75
108
  }"
76
109
  >
77
- <span slot="title">{{ props.hint }}</span>
110
+ <span slot="title">{{ resolvedProps.hint }}</span>
78
111
  </ion-datetime>
79
112
  </ng-template>
80
113
  </ion-modal>
@@ -84,13 +117,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
84
117
  type: Component,
85
118
  args: [{ selector: 'val-date-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonDatetime, IonDatetimeButton, IonModal], template: `
86
119
  <div class="button-container">
87
- <ion-datetime-button class="action" [datetime]="props.token"></ion-datetime-button>
120
+ <ion-datetime-button class="action" [datetime]="resolvedProps.token"></ion-datetime-button>
88
121
  </div>
89
122
  <ion-modal [keepContentsMounted]="true">
90
123
  <ng-template>
91
124
  <ion-datetime
92
- [formControl]="props.control"
93
- [id]="props.token"
125
+ [formControl]="resolvedProps.control"
126
+ [id]="resolvedProps.token"
94
127
  presentation="date"
95
128
  locale="es-ES"
96
129
  [firstDayOfWeek]="1"
@@ -102,12 +135,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
102
135
  time: { timeStyle: 'short' }
103
136
  }"
104
137
  >
105
- <span slot="title">{{ props.hint }}</span>
138
+ <span slot="title">{{ resolvedProps.hint }}</span>
106
139
  </ion-datetime>
107
140
  </ng-template>
108
141
  </ion-modal>
109
142
  `, styles: [":root{--ion-color-primary: #7026df;--ion-color-primary-rgb: 112, 38, 223;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #6321c4;--ion-color-primary-tint: #7e3ce2;--ion-color-secondary: #e2ccff;--ion-color-secondary-rgb: 226, 204, 255;--ion-color-secondary-contrast: #000000;--ion-color-secondary-contrast-rgb: 0, 0, 0;--ion-color-secondary-shade: #c7b4e0;--ion-color-secondary-tint: #e5d1ff;--ion-color-texti: #354c69;--ion-color-texti-rgb: 53, 76, 105;--ion-color-texti-contrast: #ffffff;--ion-color-texti-contrast-rgb: 255, 255, 255;--ion-color-texti-shade: #2f435c;--ion-color-texti-tint: #495e78;--ion-color-darki: #090f1b;--ion-color-darki-rgb: 9, 15, 27;--ion-color-darki-contrast: #ffffff;--ion-color-darki-contrast-rgb: 255, 255, 255;--ion-color-darki-shade: #080d18;--ion-color-darki-tint: #222732;--ion-color-medium: #9e9e9e;--ion-color-medium-rgb: 158, 158, 158;--ion-color-medium-contrast: #000000;--ion-color-medium-contrast-rgb: 0, 0, 0;--ion-color-medium-shade: #8b8b8b;--ion-color-medium-tint: #a8a8a8;--swiper-pagination-color: var(--ion-color-primary);--swiper-navigation-color: var(--ion-color-primary);--swiper-pagination-bullet-inactive-color: var(--ion-color-medium)}@media (prefers-color-scheme: dark){:root{--ion-color-texti: #8fc1ff;--ion-color-texti-rgb: 143, 193, 255;--ion-color-texti-contrast: #000000;--ion-color-texti-contrast-rgb: 0, 0, 0;--ion-color-texti-shade: #7eaae0;--ion-color-texti-tint: #9ac7ff;--ion-color-darki: #ffffff;--ion-color-darki-rgb: 255, 255, 255;--ion-color-darki-contrast: #000000;--ion-color-darki-contrast-rgb: 0, 0, 0;--ion-color-darki-shade: #e0e0e0;--ion-color-darki-tint: #ffffff;--ion-color-primary: #8f49f8;--ion-color-primary-rgb: 143, 73, 248;--ion-color-primary-contrast: #ffffff;--ion-color-primary-contrast-rgb: 255, 255, 255;--ion-color-primary-shade: #7e40da;--ion-color-primary-tint: #9a5bf9}}.ion-color-texti{--ion-color-base: var(--ion-color-texti);--ion-color-base-rgb: var(--ion-color-texti-rgb);--ion-color-contrast: var(--ion-color-texti-contrast);--ion-color-contrast-rgb: var(--ion-color-texti-contrast-rgb);--ion-color-shade: var(--ion-color-texti-shade);--ion-color-tint: var(--ion-color-texti-tint)}.ion-color-darki{--ion-color-base: var(--ion-color-darki);--ion-color-base-rgb: var(--ion-color-darki-rgb);--ion-color-contrast: var(--ion-color-darki-contrast);--ion-color-contrast-rgb: var(--ion-color-darki-contrast-rgb);--ion-color-shade: var(--ion-color-darki-shade);--ion-color-tint: var(--ion-color-darki-tint)}.section{margin-top:1rem}.input{margin:.5rem 0}@media (min-width: 768px){.input{margin:.75rem 0}}.button-container{display:flex;flex-direction:column;align-items:flex-start}.action{margin-top:.25rem}\n"] }]
110
- }], ctorParameters: () => [], propDecorators: { props: [{
143
+ }], propDecorators: { preset: [{
144
+ type: Input
145
+ }], props: [{
111
146
  type: Input
112
147
  }] } });
113
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUNqRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JGLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7O0FBa0NyRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLE9BQU8sa0JBQWtCO0lBVzdCLG9EQUFvRDtJQUNwRCxJQUFJLFFBQVE7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRCxzREFBc0Q7SUFDdEQsSUFBSSxVQUFVO1FBQ1osT0FBTyxJQUFJLENBQUMsS0FBSyxFQUFFLFVBQVUsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7UUFaUSxTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBWXBCLENBQUM7SUFFaEIsUUFBUTtRQUNOLHlDQUF5QztRQUN6QyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsV0FBVyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDM0IsQ0FBQztJQUNILENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUFFLE9BQU87UUFFaEMsSUFBSSxZQUFZLEdBQWtCLElBQUksQ0FBQztRQUV2QyxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzFELENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDdEQsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDaEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDM0MsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDOUMsQ0FBQztJQUNILENBQUM7K0dBakRVLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNHQXJDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVCxzeEZBekJTLFlBQVksOEJBQUUsbUJBQW1CLDBUQUFFLFdBQVcsb2hCQUFFLGlCQUFpQixtSEFBRSxRQUFROzs0RkFzQzFFLGtCQUFrQjtrQkF6QzlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsWUFDNUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDt3REFvQlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IERhdGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxpb24tZGF0ZXRpbWUtYnV0dG9uIGNsYXNzPVwiYWN0aW9uXCIgW2RhdGV0aW1lXT1cInByb3BzLnRva2VuXCI+PC9pb24tZGF0ZXRpbWUtYnV0dG9uPlxuICAgIDwvZGl2PlxuICAgIDxpb24tbW9kYWwgW2tlZXBDb250ZW50c01vdW50ZWRdPVwidHJ1ZVwiPlxuICAgICAgPG5nLXRlbXBsYXRlPlxuICAgICAgICA8aW9uLWRhdGV0aW1lXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgICAgIFtpZF09XCJwcm9wcy50b2tlblwiXG4gICAgICAgICAgcHJlc2VudGF0aW9uPVwiZGF0ZVwiXG4gICAgICAgICAgbG9jYWxlPVwiZXMtRVNcIlxuICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAgICAgICBbc2hvd0RlZmF1bHRCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgIFtkb25lVGV4dF09XCJkb25lVGV4dFwiXG4gICAgICAgICAgW2NhbmNlbFRleHRdPVwiY2FuY2VsVGV4dFwiXG4gICAgICAgICAgZm9ybWF0T3B0aW9ucz1cIntcbiAgICAgICAgICAgIGRhdGU6IHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9LFxuICAgICAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgICAgPC9pb24tZGF0ZXRpbWU+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvaW9uLW1vZGFsPlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kYXRlLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtZGF0ZS1pbnB1dFxuICpcbiAqIEEgZGF0ZSBwaWNrZXIgaW5wdXQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMsIHVzaW5nIElvbmljJ3MgZGF0ZXRpbWUgY29tcG9uZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWRhdGUtaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBoaW50OiAnU2VsZWN0IGEgZGF0ZScgfVwiPjwvdmFsLWRhdGUtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBkYXRlIGlucHV0IChmb3JtIGNvbnRyb2wsIGhpbnQsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBEYXRlSW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtEYXRlSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGRhdGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBoaW50IC0gVGhlIGhpbnQgdGV4dCBmb3IgdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIERvbmUgYnV0dG9uIHRleHQgLSBmcm9tIHByb3BzIG9yIGkxOG4gZGVmYXVsdCAqL1xuICBnZXQgZG9uZVRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcz8uZG9uZVRleHQgfHwgdGhpcy5pMThuLnQoJ29rJyk7XG4gIH1cblxuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGNhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcz8uY2FuY2VsVGV4dCB8fCB0aGlzLmkxOG4udCgnY2FuY2VsJyk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgLy8gQXBwbHkgZGVmYXVsdCB2YWx1ZXMgb24gaW5pdGlhbGl6YXRpb25cbiAgICBpZiAodGhpcy5wcm9wcz8ud2l0aERlZmF1bHQgfHwgdGhpcy5wcm9wcz8udmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWUoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFwcGx5RGVmYXVsdFZhbHVlKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5wcm9wcy5jb250cm9sKSByZXR1cm47XG5cbiAgICBsZXQgZGVmYXVsdFZhbHVlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcblxuICAgIC8vIEV4cGxpY2l0IHZhbHVlIHRha2VzIHByZWNlZGVuY2VcbiAgICBpZiAodGhpcy5wcm9wcy52YWx1ZSkge1xuICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUodGhpcy5wcm9wcy52YWx1ZSkudG9JU09TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnByb3BzLndpdGhEZWZhdWx0ID09PSAnc3RyaW5nJykge1xuICAgICAgZGVmYXVsdFZhbHVlID0gbmV3IERhdGUodGhpcy5wcm9wcy53aXRoRGVmYXVsdCkudG9JU09TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMud2l0aERlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoZGVmYXVsdFZhbHVlKTtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5wcm9wcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
148
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFrQzFEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUF6Qy9CO1FBMENVLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7V0FLRztRQUNNLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsa0JBQWEsR0FBc0IsRUFBdUIsQ0FBQztLQThENUQ7SUE1REMsb0RBQW9EO0lBQ3BELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWTtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUM3QixDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQWdDO1lBQzVFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDTyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztZQUFFLE9BQU87UUFFeEMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztZQUFFLE9BQU87UUFFekUsSUFBSSxZQUFZLEdBQWtCLElBQUksQ0FBQztRQUV2QyxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xFLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUQsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkQsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7K0dBckZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZJQXJDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVCxzeEZBekJTLFlBQVksOEJBQUUsbUJBQW1CLDBUQUFFLFdBQVcsb2hCQUFFLGlCQUFpQixtSEFBRSxRQUFROzs0RkFzQzFFLGtCQUFrQjtrQkF6QzlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsWUFDNUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDs4QkF3QlEsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IERhdGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxpb24tZGF0ZXRpbWUtYnV0dG9uIGNsYXNzPVwiYWN0aW9uXCIgW2RhdGV0aW1lXT1cInJlc29sdmVkUHJvcHMudG9rZW5cIj48L2lvbi1kYXRldGltZS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlvbi1tb2RhbCBba2VlcENvbnRlbnRzTW91bnRlZF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24tZGF0ZXRpbWVcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVzb2x2ZWRQcm9wcy5jb250cm9sXCJcbiAgICAgICAgICBbaWRdPVwicmVzb2x2ZWRQcm9wcy50b2tlblwiXG4gICAgICAgICAgcHJlc2VudGF0aW9uPVwiZGF0ZVwiXG4gICAgICAgICAgbG9jYWxlPVwiZXMtRVNcIlxuICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAgICAgICBbc2hvd0RlZmF1bHRCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgIFtkb25lVGV4dF09XCJkb25lVGV4dFwiXG4gICAgICAgICAgW2NhbmNlbFRleHRdPVwiY2FuY2VsVGV4dFwiXG4gICAgICAgICAgZm9ybWF0T3B0aW9ucz1cIntcbiAgICAgICAgICAgIGRhdGU6IHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9LFxuICAgICAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcmVzb2x2ZWRQcm9wcy5oaW50IH19PC9zcGFuPlxuICAgICAgICA8L2lvbi1kYXRldGltZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1kYXRlLWlucHV0XG4gKlxuICogQSBkYXRlIHBpY2tlciBpbnB1dCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3JtcywgdXNpbmcgSW9uaWMncyBkYXRldGltZSBjb21wb25lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIGhpbnQ6ICdTZWxlY3QgYSBkYXRlJyB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRhdGUgaW5wdXQgKGZvcm0gY29udHJvbCwgaGludCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgZGF0ZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtZGF0ZS1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogY3RybCB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIEB0eXBlIHtEYXRlSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGRhdGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBoaW50IC0gVGhlIGhpbnQgdGV4dCBmb3IgdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSA9IHt9IGFzIERhdGVJbnB1dE1ldGFkYXRhO1xuXG4gIC8qKiBEb25lIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGRvbmVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8uZG9uZVRleHQgfHwgdGhpcy5pMThuLnQoJ29rJyk7XG4gIH1cblxuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGNhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5jYW5jZWxUZXh0IHx8IHRoaXMuaTE4bi50KCdjYW5jZWwnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcmVzZXQnXSB8fCBjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBwcmVzZXQgY29uZmlndXJhdGlvbiB3aXRoIGV4cGxpY2l0IHByb3BzLlxuICAgKiBFeHBsaWNpdCBwcm9wcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnZGF0ZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+KVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIERhdGVJbnB1dE1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sKSByZXR1cm47XG5cbiAgICAvLyBPbmx5IGFwcGx5IGlmIHdpdGhEZWZhdWx0IG9yIHZhbHVlIGlzIHNldFxuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ICYmICF0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHJldHVybjtcblxuICAgIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRXhwbGljaXQgdmFsdWUgdGFrZXMgcHJlY2VkZW5jZVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSkudG9JU09TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQpLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==