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.
- package/esm2022/lib/components/atoms/avatar/avatar.component.mjs +51 -14
- package/esm2022/lib/components/atoms/fab/fab.component.mjs +63 -25
- package/esm2022/lib/components/atoms/progress-bar/progress-bar.component.mjs +64 -19
- package/esm2022/lib/components/molecules/accordion/accordion.component.mjs +45 -18
- package/esm2022/lib/components/molecules/alert-box/alert-box.component.mjs +55 -13
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +43 -15
- package/esm2022/lib/components/molecules/card/card.component.mjs +126 -83
- package/esm2022/lib/components/molecules/check-input/check-input.component.mjs +52 -8
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +54 -37
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +1 -1
- package/esm2022/lib/components/molecules/date-input/date-input.component.mjs +62 -27
- package/esm2022/lib/components/molecules/docs-code-example/docs-code-example.component.mjs +3 -3
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +48 -18
- package/esm2022/lib/components/molecules/glow-card/glow-card.component.mjs +74 -46
- package/esm2022/lib/components/molecules/multi-select-search/multi-select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/participant-card/participant-card.component.mjs +1 -1
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +49 -21
- package/esm2022/lib/components/molecules/phone-input/phone-input.component.mjs +95 -59
- package/esm2022/lib/components/molecules/pill/pill.component.mjs +61 -13
- package/esm2022/lib/components/molecules/progress-status/progress-status.component.mjs +2 -2
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +60 -43
- package/esm2022/lib/components/molecules/searchbar/searchbar.component.mjs +56 -26
- package/esm2022/lib/components/molecules/searchbar/types.mjs +2 -0
- package/esm2022/lib/components/molecules/segment-control/segment-control.component.mjs +52 -29
- package/esm2022/lib/components/molecules/select-input/select-input.component.mjs +68 -18
- package/esm2022/lib/components/molecules/select-search/select-search.component.mjs +2 -2
- package/esm2022/lib/components/molecules/stats-card/stats-card.component.mjs +67 -51
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +51 -23
- package/esm2022/lib/components/molecules/tabs/tabs.component.mjs +59 -21
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +49 -19
- package/esm2022/lib/components/molecules/textarea-input/textarea-input.component.mjs +93 -59
- package/esm2022/lib/components/molecules/toggle-input/toggle-input.component.mjs +49 -15
- package/esm2022/lib/components/molecules/winner-display/winner-display.component.mjs +1 -1
- package/esm2022/lib/components/organisms/comment-section/comment-section.component.mjs +2 -2
- package/esm2022/lib/components/organisms/form/form.component.mjs +2 -2
- package/esm2022/lib/components/organisms/tabbed-content/tabbed-content.component.mjs +1 -1
- package/esm2022/lib/components/organisms/toolbar/toolbar.component.mjs +2 -2
- package/esm2022/lib/components/organisms/wizard/wizard-footer/wizard-footer.component.mjs +2 -2
- package/fesm2022/valtech-components.mjs +1638 -837
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/avatar/avatar.component.d.ts +26 -5
- package/lib/components/atoms/fab/fab.component.d.ts +24 -5
- package/lib/components/atoms/progress-bar/progress-bar.component.d.ts +21 -6
- package/lib/components/molecules/accordion/accordion.component.d.ts +10 -4
- package/lib/components/molecules/alert-box/alert-box.component.d.ts +24 -5
- package/lib/components/molecules/breadcrumb/breadcrumb.component.d.ts +10 -4
- package/lib/components/molecules/card/card.component.d.ts +24 -5
- package/lib/components/molecules/check-input/check-input.component.d.ts +25 -4
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +10 -4
- package/lib/components/molecules/date-input/date-input.component.d.ts +25 -7
- package/lib/components/molecules/email-input/email-input.component.d.ts +25 -6
- package/lib/components/molecules/glow-card/glow-card.component.d.ts +16 -5
- package/lib/components/molecules/password-input/password-input.component.d.ts +25 -6
- package/lib/components/molecules/phone-input/phone-input.component.d.ts +28 -5
- package/lib/components/molecules/pill/pill.component.d.ts +27 -3
- package/lib/components/molecules/rating/rating.component.d.ts +10 -4
- package/lib/components/molecules/searchbar/searchbar.component.d.ts +15 -11
- package/lib/components/molecules/searchbar/types.d.ts +33 -0
- package/lib/components/molecules/segment-control/segment-control.component.d.ts +17 -6
- package/lib/components/molecules/select-input/select-input.component.d.ts +26 -6
- package/lib/components/molecules/stats-card/stats-card.component.d.ts +10 -4
- package/lib/components/molecules/stepper/stepper.component.d.ts +20 -4
- package/lib/components/molecules/tabs/tabs.component.d.ts +27 -4
- package/lib/components/molecules/text-input/text-input.component.d.ts +26 -26
- package/lib/components/molecules/textarea-input/textarea-input.component.d.ts +27 -4
- package/lib/components/molecules/toggle-input/toggle-input.component.d.ts +25 -4
- package/package.json +1 -1
- 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
|
|
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
|
-
* @
|
|
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.
|
|
47
|
-
return this.
|
|
61
|
+
if (chip.selected && this.resolvedProps.selectedColor) {
|
|
62
|
+
return this.resolvedProps.selectedColor;
|
|
48
63
|
}
|
|
49
|
-
return chip.color || this.
|
|
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.
|
|
73
|
+
if (!this.resolvedProps.selectable)
|
|
59
74
|
return;
|
|
60
|
-
if (this.
|
|
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.
|
|
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.
|
|
88
|
+
const index = this.resolvedProps.chips.indexOf(chip);
|
|
74
89
|
if (index > -1) {
|
|
75
|
-
this.
|
|
90
|
+
this.resolvedProps.chips.splice(index, 1);
|
|
76
91
|
this.chipRemove.emit({
|
|
77
92
|
chip,
|
|
78
|
-
remaining: [...this.
|
|
93
|
+
remaining: [...this.resolvedProps.chips],
|
|
79
94
|
});
|
|
80
95
|
}
|
|
81
96
|
}
|
|
82
97
|
emitSelectionChange() {
|
|
83
|
-
const selected = this.
|
|
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.
|
|
87
|
-
values: this.
|
|
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]="
|
|
93
|
-
@for (chip of
|
|
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]="
|
|
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 &&
|
|
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 (
|
|
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]="
|
|
119
|
-
@for (chip of
|
|
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]="
|
|
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 &&
|
|
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 (
|
|
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: {
|
|
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.
|
|
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.
|
|
26
|
-
}
|
|
27
|
-
constructor() {
|
|
28
|
-
this.i18n = inject(I18nService);
|
|
41
|
+
return this.resolvedProps?.cancelText || this.i18n.t('cancel');
|
|
29
42
|
}
|
|
30
43
|
ngOnInit() {
|
|
31
|
-
|
|
32
|
-
|
|
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.
|
|
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.
|
|
42
|
-
defaultValue = new Date(this.
|
|
74
|
+
if (this.resolvedProps.value) {
|
|
75
|
+
defaultValue = new Date(this.resolvedProps.value).toISOString();
|
|
43
76
|
}
|
|
44
|
-
else if (typeof this.
|
|
45
|
-
defaultValue = new Date(this.
|
|
77
|
+
else if (typeof this.resolvedProps.withDefault === 'string') {
|
|
78
|
+
defaultValue = new Date(this.resolvedProps.withDefault).toISOString();
|
|
46
79
|
}
|
|
47
|
-
else if (this.
|
|
80
|
+
else if (this.resolvedProps.withDefault === true) {
|
|
48
81
|
defaultValue = new Date().toISOString();
|
|
49
82
|
}
|
|
50
83
|
if (defaultValue) {
|
|
51
|
-
this.
|
|
52
|
-
this.
|
|
53
|
-
this.
|
|
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]="
|
|
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]="
|
|
65
|
-
[id]="
|
|
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">{{
|
|
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]="
|
|
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]="
|
|
93
|
-
[id]="
|
|
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">{{
|
|
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
|
-
}],
|
|
143
|
+
}], propDecorators: { preset: [{
|
|
144
|
+
type: Input
|
|
145
|
+
}], props: [{
|
|
111
146
|
type: Input
|
|
112
147
|
}] } });
|
|
113
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
148
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2RhdGUtaW5wdXQvZGF0ZS1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNyRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFrQzFEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxrQkFBa0I7SUF6Qy9CO1FBMENVLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDM0IsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7V0FLRztRQUNNLFVBQUssR0FBK0IsRUFBRSxDQUFDO1FBRWhEOztXQUVHO1FBQ0gsa0JBQWEsR0FBc0IsRUFBdUIsQ0FBQztLQThENUQ7SUE1REMsb0RBQW9EO0lBQ3BELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVELHNEQUFzRDtJQUN0RCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLEVBQUUsVUFBVSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsUUFBUSxDQUFDLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0ssWUFBWTtRQUNsQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsTUFBTTtZQUM3QixDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQWdDO1lBQzVFLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFUCxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDTyxDQUFDO0lBQ3pCLENBQUM7SUFFTyxpQkFBaUI7UUFDdkIsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTztZQUFFLE9BQU87UUFFeEMsNENBQTRDO1FBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSztZQUFFLE9BQU87UUFFekUsSUFBSSxZQUFZLEdBQWtCLElBQUksQ0FBQztRQUV2QyxrQ0FBa0M7UUFDbEMsSUFBSSxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzdCLFlBQVksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ2xFLENBQUM7YUFBTSxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDOUQsWUFBWSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDeEUsQ0FBQzthQUFNLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDbkQsWUFBWSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksWUFBWSxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQzVDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLHNCQUFzQixFQUFFLENBQUM7UUFDdEQsQ0FBQztJQUNILENBQUM7K0dBckZVLGtCQUFrQjttR0FBbEIsa0JBQWtCLDZJQXJDbkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVCxzeEZBekJTLFlBQVksOEJBQUUsbUJBQW1CLDBUQUFFLFdBQVcsb2hCQUFFLGlCQUFpQixtSEFBRSxRQUFROzs0RkFzQzFFLGtCQUFrQjtrQkF6QzlCLFNBQVM7K0JBQ0UsZ0JBQWdCLGNBQ2QsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxRQUFRLENBQUMsWUFDNUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDs4QkF3QlEsTUFBTTtzQkFBZCxLQUFLO2dCQVFHLEtBQUs7c0JBQWIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCwgSW5wdXQsIE9uQ2hhbmdlcywgT25Jbml0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IFByZXNldFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wcmVzZXRzJztcbmltcG9ydCB7IERhdGVJbnB1dE1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kYXRlLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uRGF0ZXRpbWUsIElvbkRhdGV0aW1lQnV0dG9uLCBJb25Nb2RhbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImJ1dHRvbi1jb250YWluZXJcIj5cbiAgICAgIDxpb24tZGF0ZXRpbWUtYnV0dG9uIGNsYXNzPVwiYWN0aW9uXCIgW2RhdGV0aW1lXT1cInJlc29sdmVkUHJvcHMudG9rZW5cIj48L2lvbi1kYXRldGltZS1idXR0b24+XG4gICAgPC9kaXY+XG4gICAgPGlvbi1tb2RhbCBba2VlcENvbnRlbnRzTW91bnRlZF09XCJ0cnVlXCI+XG4gICAgICA8bmctdGVtcGxhdGU+XG4gICAgICAgIDxpb24tZGF0ZXRpbWVcbiAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwicmVzb2x2ZWRQcm9wcy5jb250cm9sXCJcbiAgICAgICAgICBbaWRdPVwicmVzb2x2ZWRQcm9wcy50b2tlblwiXG4gICAgICAgICAgcHJlc2VudGF0aW9uPVwiZGF0ZVwiXG4gICAgICAgICAgbG9jYWxlPVwiZXMtRVNcIlxuICAgICAgICAgIFtmaXJzdERheU9mV2Vla109XCIxXCJcbiAgICAgICAgICBbc2hvd0RlZmF1bHRCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgIFtkb25lVGV4dF09XCJkb25lVGV4dFwiXG4gICAgICAgICAgW2NhbmNlbFRleHRdPVwiY2FuY2VsVGV4dFwiXG4gICAgICAgICAgZm9ybWF0T3B0aW9ucz1cIntcbiAgICAgICAgICAgIGRhdGU6IHsgZGF0ZVN0eWxlOiAnbWVkaXVtJyB9LFxuICAgICAgICAgICAgdGltZTogeyB0aW1lU3R5bGU6ICdzaG9ydCcgfVxuICAgICAgICAgIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gc2xvdD1cInRpdGxlXCI+e3sgcmVzb2x2ZWRQcm9wcy5oaW50IH19PC9zcGFuPlxuICAgICAgICA8L2lvbi1kYXRldGltZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9pb24tbW9kYWw+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RhdGUtaW5wdXQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1kYXRlLWlucHV0XG4gKlxuICogQSBkYXRlIHBpY2tlciBpbnB1dCBpbnRlZ3JhdGVkIHdpdGggQW5ndWxhciBmb3JtcywgdXNpbmcgSW9uaWMncyBkYXRldGltZSBjb21wb25lbnQuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtZGF0ZS1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIGhpbnQ6ICdTZWxlY3QgYSBkYXRlJyB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAqXG4gKiBAaW5wdXQgcHJvcHM6IERhdGVJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGRhdGUgaW5wdXQgKGZvcm0gY29udHJvbCwgaGludCwgZXRjLilcbiAqL1xuZXhwb3J0IGNsYXNzIERhdGVJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBwcmVzZXRzID0gaW5qZWN0KFByZXNldFNlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBQcmVzZXQgbmFtZSB0byBhcHBseS4gUHJlc2V0cyBkZWZpbmUgcmV1c2FibGUgZGF0ZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtZGF0ZS1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogY3RybCB9XCI+PC92YWwtZGF0ZS1pbnB1dD5cbiAgICovXG4gIEBJbnB1dCgpIHByZXNldD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuIFZhbHVlcyBoZXJlIG92ZXJyaWRlIHByZXNldCB2YWx1ZXMuXG4gICAqIEB0eXBlIHtEYXRlSW5wdXRNZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGNvbnRyb2wgLSBUaGUgQW5ndWxhciBGb3JtQ29udHJvbCBmb3IgdGhlIGRhdGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBoaW50IC0gVGhlIGhpbnQgdGV4dCBmb3IgdGhlIGlucHV0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+ID0ge307XG5cbiAgLyoqXG4gICAqIFJlc29sdmVkIHByb3BzIGFmdGVyIG1lcmdpbmcgcHJlc2V0ICsgZXhwbGljaXQgcHJvcHMuXG4gICAqL1xuICByZXNvbHZlZFByb3BzOiBEYXRlSW5wdXRNZXRhZGF0YSA9IHt9IGFzIERhdGVJbnB1dE1ldGFkYXRhO1xuXG4gIC8qKiBEb25lIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGRvbmVUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRQcm9wcz8uZG9uZVRleHQgfHwgdGhpcy5pMThuLnQoJ29rJyk7XG4gIH1cblxuICAvKiogQ2FuY2VsIGJ1dHRvbiB0ZXh0IC0gZnJvbSBwcm9wcyBvciBpMThuIGRlZmF1bHQgKi9cbiAgZ2V0IGNhbmNlbFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvbHZlZFByb3BzPy5jYW5jZWxUZXh0IHx8IHRoaXMuaTE4bi50KCdjYW5jZWwnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMucmVzb2x2ZVByb3BzKCk7XG4gICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzWydwcmVzZXQnXSB8fCBjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnJlc29sdmVQcm9wcygpO1xuICAgICAgdGhpcy5hcHBseURlZmF1bHRWYWx1ZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBNZXJnZSBwcmVzZXQgY29uZmlndXJhdGlvbiB3aXRoIGV4cGxpY2l0IHByb3BzLlxuICAgKiBFeHBsaWNpdCBwcm9wcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBwcmVzZXQgdmFsdWVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZXNvbHZlUHJvcHMoKTogdm9pZCB7XG4gICAgY29uc3QgcHJlc2V0UHJvcHMgPSB0aGlzLnByZXNldFxuICAgICAgPyAodGhpcy5wcmVzZXRzLmdldCgnZGF0ZUlucHV0JywgdGhpcy5wcmVzZXQpIGFzIFBhcnRpYWw8RGF0ZUlucHV0TWV0YWRhdGE+KVxuICAgICAgOiB7fTtcblxuICAgIHRoaXMucmVzb2x2ZWRQcm9wcyA9IHtcbiAgICAgIC4uLnByZXNldFByb3BzLFxuICAgICAgLi4udGhpcy5wcm9wcyxcbiAgICB9IGFzIERhdGVJbnB1dE1ldGFkYXRhO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZSgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sKSByZXR1cm47XG5cbiAgICAvLyBPbmx5IGFwcGx5IGlmIHdpdGhEZWZhdWx0IG9yIHZhbHVlIGlzIHNldFxuICAgIGlmICghdGhpcy5yZXNvbHZlZFByb3BzLndpdGhEZWZhdWx0ICYmICF0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHJldHVybjtcblxuICAgIGxldCBkZWZhdWx0VmFsdWU6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRXhwbGljaXQgdmFsdWUgdGFrZXMgcHJlY2VkZW5jZVxuICAgIGlmICh0aGlzLnJlc29sdmVkUHJvcHMudmFsdWUpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKHRoaXMucmVzb2x2ZWRQcm9wcy52YWx1ZSkudG9JU09TdHJpbmcoKTtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBkZWZhdWx0VmFsdWUgPSBuZXcgRGF0ZSh0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQpLnRvSVNPU3RyaW5nKCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLnJlc29sdmVkUHJvcHMud2l0aERlZmF1bHQgPT09IHRydWUpIHtcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICB0aGlzLnJlc29sdmVkUHJvcHMuY29udHJvbC5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgdGhpcy5yZXNvbHZlZFByb3BzLmNvbnRyb2wubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMucmVzb2x2ZWRQcm9wcy5jb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|