valtech-components 2.0.536 → 2.0.537
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/molecules/number-from-to/number-from-to.component.mjs +18 -7
- package/esm2022/lib/components/molecules/number-stepper/number-stepper.component.mjs +16 -6
- package/esm2022/lib/components/organisms/docs-toc/docs-toc.component.mjs +49 -25
- package/fesm2022/valtech-components.mjs +76 -33
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/rights-footer/rights-footer.component.d.ts +1 -1
- package/lib/components/molecules/number-from-to/number-from-to.component.d.ts +5 -0
- package/lib/components/molecules/number-stepper/number-stepper.component.d.ts +5 -0
- package/lib/components/organisms/article/article.component.d.ts +2 -2
- package/lib/components/organisms/docs-toc/docs-toc.component.d.ts +3 -1
- package/package.json +1 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
1
|
+
import { Component, inject, Input } from '@angular/core';
|
|
2
2
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
3
|
import { IonInput, IonLabel } from '@ionic/angular/standalone';
|
|
4
|
+
import { I18nService } from '../../../services/i18n';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
5
6
|
import * as i1 from "@angular/forms";
|
|
6
7
|
/**
|
|
@@ -14,7 +15,17 @@ import * as i1 from "@angular/forms";
|
|
|
14
15
|
* @input props: NumberFromToMetadata - Configuration for the number range input.
|
|
15
16
|
*/
|
|
16
17
|
export class NumberFromToComponent {
|
|
17
|
-
|
|
18
|
+
/** Get from label with i18n fallback */
|
|
19
|
+
getFromLabel() {
|
|
20
|
+
return this.props.fromLabel || this.i18n.t('from');
|
|
21
|
+
}
|
|
22
|
+
/** Get to label with i18n fallback */
|
|
23
|
+
getToLabel() {
|
|
24
|
+
return this.props.toLabel || this.i18n.t('to');
|
|
25
|
+
}
|
|
26
|
+
constructor() {
|
|
27
|
+
this.i18n = inject(I18nService);
|
|
28
|
+
}
|
|
18
29
|
ngOnInit() {
|
|
19
30
|
// Apply default values if configured
|
|
20
31
|
if (this.props?.withDefault || this.props?.value) {
|
|
@@ -75,7 +86,7 @@ export class NumberFromToComponent {
|
|
|
75
86
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumberFromToComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
76
87
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NumberFromToComponent, isStandalone: true, selector: "val-number-from-to", inputs: { props: "props" }, ngImport: i0, template: `
|
|
77
88
|
<div class="number-from-to-container">
|
|
78
|
-
<ion-label position="stacked">{{
|
|
89
|
+
<ion-label position="stacked">{{ getFromLabel() }}</ion-label>
|
|
79
90
|
<ion-input
|
|
80
91
|
[formControl]="fromControl"
|
|
81
92
|
type="number"
|
|
@@ -86,7 +97,7 @@ export class NumberFromToComponent {
|
|
|
86
97
|
>
|
|
87
98
|
</ion-input>
|
|
88
99
|
|
|
89
|
-
<ion-label position="stacked">{{
|
|
100
|
+
<ion-label position="stacked">{{ getToLabel() }}</ion-label>
|
|
90
101
|
<ion-input
|
|
91
102
|
[formControl]="toControl"
|
|
92
103
|
type="number"
|
|
@@ -103,7 +114,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
103
114
|
type: Component,
|
|
104
115
|
args: [{ selector: 'val-number-from-to', standalone: true, imports: [ReactiveFormsModule, IonInput, IonLabel], template: `
|
|
105
116
|
<div class="number-from-to-container">
|
|
106
|
-
<ion-label position="stacked">{{
|
|
117
|
+
<ion-label position="stacked">{{ getFromLabel() }}</ion-label>
|
|
107
118
|
<ion-input
|
|
108
119
|
[formControl]="fromControl"
|
|
109
120
|
type="number"
|
|
@@ -114,7 +125,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
114
125
|
>
|
|
115
126
|
</ion-input>
|
|
116
127
|
|
|
117
|
-
<ion-label position="stacked">{{
|
|
128
|
+
<ion-label position="stacked">{{ getToLabel() }}</ion-label>
|
|
118
129
|
<ion-input
|
|
119
130
|
[formControl]="toControl"
|
|
120
131
|
type="number"
|
|
@@ -129,4 +140,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
129
140
|
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
130
141
|
type: Input
|
|
131
142
|
}] } });
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
143
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWZyb20tdG8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItZnJvbS10by9udW1iZXItZnJvbS10by5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDOzs7QUFrQ3JEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFXaEMsd0NBQXdDO0lBQ3hDLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3JELENBQUM7SUFFRCxzQ0FBc0M7SUFDdEMsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVEO1FBWlEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztJQVlwQixDQUFDO0lBRWhCLFFBQVE7UUFDTixxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7SUFDSCxDQUFDO0lBRU8sa0JBQWtCO1FBQ3hCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQ2hELElBQUksWUFBWSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzFCLElBQUksT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksQ0FBQyxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQ3hFLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDOUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsWUFBWSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzVDLENBQUM7aUJBQU0sQ0FBQztnQkFDTixxREFBcUQ7Z0JBQ3JELElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUN6QyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQztZQUN6QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxjQUFjLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxXQUFXLEVBQUUsc0JBQXNCLEVBQUUsQ0FBQztZQUMzQyxJQUFJLENBQUMsU0FBUyxFQUFFLHNCQUFzQixFQUFFLENBQUM7UUFDM0MsQ0FBQztJQUNILENBQUM7SUFFTyxtQkFBbUI7UUFDekIsa0NBQWtDO1FBQ2xDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUMzRixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsMkJBQTJCO1FBQzNCLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUVELHVCQUF1QjtRQUN2QixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0MsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDakQsQ0FBQztRQUVELDRDQUE0QztRQUM1QyxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQztZQUNILGlEQUFpRDtZQUNqRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLCtCQUErQjtZQUMvQixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUMxQyxDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksU0FBUztRQUNYLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDOUIsQ0FBQzsrR0FyRlUscUJBQXFCO21HQUFyQixxQkFBcUIsMEdBckN0Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBd0JULHlFQXpCUyxtQkFBbUIsMFRBQUUsUUFBUSw4ZUFBRSxRQUFROzs0RkFzQ3RDLHFCQUFxQjtrQkF6Q2pDLFNBQVM7K0JBQ0Usb0JBQW9CLGNBQ2xCLElBQUksV0FDUCxDQUFDLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUMsWUFDeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXdCVDt3REFvQlEsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBpbmplY3QsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSW5wdXQsIElvbkxhYmVsIH0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgTnVtYmVyRnJvbVRvTWV0YWRhdGEgfSBmcm9tICcuL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW51bWJlci1mcm9tLXRvJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIElvbklucHV0LCBJb25MYWJlbF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cIm51bWJlci1mcm9tLXRvLWNvbnRhaW5lclwiPlxuICAgICAgPGlvbi1sYWJlbCBwb3NpdGlvbj1cInN0YWNrZWRcIj57eyBnZXRGcm9tTGFiZWwoKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwiZnJvbUNvbnRyb2xcIlxuICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgW3BsYWNlaG9sZGVyXT1cInByb3BzLmZyb21QbGFjZWhvbGRlciB8fCBwcm9wcy5wbGFjZWhvbGRlclwiXG4gICAgICAgIFttaW5dPVwicHJvcHMubWluXCJcbiAgICAgICAgW21heF09XCJwcm9wcy5tYXhcIlxuICAgICAgICBbc3RlcF09XCJwcm9wcy5zdGVwXCJcbiAgICAgID5cbiAgICAgIDwvaW9uLWlucHV0PlxuXG4gICAgICA8aW9uLWxhYmVsIHBvc2l0aW9uPVwic3RhY2tlZFwiPnt7IGdldFRvTGFiZWwoKSB9fTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1pbnB1dFxuICAgICAgICBbZm9ybUNvbnRyb2xdPVwidG9Db250cm9sXCJcbiAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgIFtwbGFjZWhvbGRlcl09XCJwcm9wcy50b1BsYWNlaG9sZGVyIHx8IHByb3BzLnBsYWNlaG9sZGVyXCJcbiAgICAgICAgW21pbl09XCJwcm9wcy5taW5cIlxuICAgICAgICBbbWF4XT1cInByb3BzLm1heFwiXG4gICAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXBcIlxuICAgICAgPlxuICAgICAgPC9pb24taW5wdXQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1mcm9tLXRvLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbnVtYmVyLWZyb20tdG9cbiAqXG4gKiBBIGR1YWwgbnVtYmVyIGlucHV0IGZvciBzcGVjaWZ5aW5nIGEgcmFuZ2UgKGZyb20vdG8gdmFsdWVzKSwgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIDx2YWwtbnVtYmVyLWZyb20tdG8gW3Byb3BzXT1cInsgZnJvbUNvbnRyb2w6IGZyb21DdHJsLCB0b0NvbnRyb2w6IHRvQ3RybCwgbWluOiAwLCBtYXg6IDEwMCB9XCI+PC92YWwtbnVtYmVyLWZyb20tdG8+XG4gKlxuICogQGlucHV0IHByb3BzOiBOdW1iZXJGcm9tVG9NZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBudW1iZXIgcmFuZ2UgaW5wdXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBOdW1iZXJGcm9tVG9Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtOdW1iZXJGcm9tVG9NZXRhZGF0YX1cbiAgICogQHByb3BlcnR5IGZyb21Db250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBcImZyb21cIiB2YWx1ZS5cbiAgICogQHByb3BlcnR5IHRvQ29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgXCJ0b1wiIHZhbHVlLlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IE51bWJlckZyb21Ub01ldGFkYXRhO1xuXG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIEdldCBmcm9tIGxhYmVsIHdpdGggaTE4biBmYWxsYmFjayAqL1xuICBnZXRGcm9tTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5mcm9tTGFiZWwgfHwgdGhpcy5pMThuLnQoJ2Zyb20nKTtcbiAgfVxuXG4gIC8qKiBHZXQgdG8gbGFiZWwgd2l0aCBpMThuIGZhbGxiYWNrICovXG4gIGdldFRvTGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50b0xhYmVsIHx8IHRoaXMuaTE4bi50KCd0bycpO1xuICB9XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEFwcGx5IGRlZmF1bHQgdmFsdWVzIGlmIGNvbmZpZ3VyZWRcbiAgICBpZiAodGhpcy5wcm9wcz8ud2l0aERlZmF1bHQgfHwgdGhpcy5wcm9wcz8udmFsdWUpIHtcbiAgICAgIHRoaXMuYXBwbHlEZWZhdWx0VmFsdWVzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhcHBseURlZmF1bHRWYWx1ZXMoKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlID0gdGhpcy5yZXNvbHZlRGVmYXVsdFZhbHVlKCk7XG4gICAgaWYgKGRlZmF1bHRWYWx1ZSAhPT0gbnVsbCkge1xuICAgICAgaWYgKHR5cGVvZiBkZWZhdWx0VmFsdWUgPT09ICdvYmplY3QnICYmIGRlZmF1bHRWYWx1ZS5mcm9tICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5mcm9tQ29udHJvbD8uc2V0VmFsdWUoZGVmYXVsdFZhbHVlLmZyb20pO1xuICAgICAgICB0aGlzLnRvQ29udHJvbD8uc2V0VmFsdWUoZGVmYXVsdFZhbHVlLnRvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpIGVzIHVuIHZhbG9yIHNpbXBsZSwgYXBsaWNhcmxvIGEgYW1ib3MgY29udHJvbGVzXG4gICAgICAgIHRoaXMuZnJvbUNvbnRyb2w/LnNldFZhbHVlKGRlZmF1bHRWYWx1ZSk7XG4gICAgICAgIHRoaXMudG9Db250cm9sPy5zZXRWYWx1ZShkZWZhdWx0VmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5mcm9tQ29udHJvbD8ubWFya0FzUHJpc3RpbmUoKTtcbiAgICAgIHRoaXMudG9Db250cm9sPy5tYXJrQXNQcmlzdGluZSgpO1xuICAgICAgdGhpcy5mcm9tQ29udHJvbD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xuICAgICAgdGhpcy50b0NvbnRyb2w/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVEZWZhdWx0VmFsdWUoKTogYW55IHtcbiAgICAvLyBFeHBsaWNpdCB2YWx1ZSB0YWtlcyBwcmVjZWRlbmNlXG4gICAgaWYgKHRoaXMucHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiB0aGlzLnByb3BzLnZhbHVlICE9PSBudWxsICYmIHRoaXMucHJvcHMudmFsdWUgIT09ICcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHRoaXMucHJvcHMudmFsdWUpO1xuICAgIH1cblxuICAgIC8vIE5vIGRlZmF1bHQgY29uZmlndXJhdGlvblxuICAgIGlmICghdGhpcy5wcm9wcy53aXRoRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gQ3VzdG9tIGRlZmF1bHQgdmFsdWVcbiAgICBpZiAodHlwZW9mIHRoaXMucHJvcHMud2l0aERlZmF1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gdGhpcy5wYXJzZVZhbHVlKHRoaXMucHJvcHMud2l0aERlZmF1bHQpO1xuICAgIH1cblxuICAgIC8vIEF1dG8gZGVmYXVsdCB2YWx1ZSAod2l0aERlZmF1bHQgPT09IHRydWUpXG4gICAgcmV0dXJuIHsgZnJvbTogMCwgdG86IDAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VWYWx1ZSh2YWx1ZTogc3RyaW5nKTogYW55IHtcbiAgICB0cnkge1xuICAgICAgLy8gVHJ5IHRvIHBhcnNlIGFzIEpTT04gZmlyc3QgKGZvciBvYmplY3QgdmFsdWVzKVxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UodmFsdWUpO1xuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gSWYgbm90IEpTT04sIHRyZWF0IGFzIG51bWJlclxuICAgICAgY29uc3QgbnVtVmFsdWUgPSBwYXJzZUZsb2F0KHZhbHVlKSB8fCAwO1xuICAgICAgcmV0dXJuIHsgZnJvbTogbnVtVmFsdWUsIHRvOiBudW1WYWx1ZSB9O1xuICAgIH1cbiAgfVxuXG4gIGdldCBmcm9tQ29udHJvbCgpOiBGb3JtQ29udHJvbCB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZnJvbUNvbnRyb2w7XG4gIH1cblxuICBnZXQgdG9Db250cm9sKCk6IEZvcm1Db250cm9sIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy50b0NvbnRyb2w7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, Input, Output, EventEmitter } from '@angular/core';
|
|
2
|
+
import { Component, inject, Input, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
4
|
import { IonButton, IonIcon, IonInput } from '@ionic/angular/standalone';
|
|
5
5
|
import { addIcons } from 'ionicons';
|
|
6
6
|
import { addOutline, removeOutline } from 'ionicons/icons';
|
|
7
|
+
import { I18nService } from '../../../services/i18n';
|
|
7
8
|
import { ComponentStates } from '../../types';
|
|
8
9
|
import * as i0 from "@angular/core";
|
|
9
10
|
import * as i1 from "@angular/forms";
|
|
@@ -64,8 +65,17 @@ export class NumberStepperComponent {
|
|
|
64
65
|
constructor() {
|
|
65
66
|
this.valueChange = new EventEmitter();
|
|
66
67
|
this.states = ComponentStates;
|
|
68
|
+
this.i18n = inject(I18nService);
|
|
67
69
|
this.valueSubscription = null;
|
|
68
70
|
}
|
|
71
|
+
/** Get decrement button aria-label with i18n fallback */
|
|
72
|
+
getDecrementLabel() {
|
|
73
|
+
return this.props.decrementLabel || this.i18n.t('decrease');
|
|
74
|
+
}
|
|
75
|
+
/** Get increment button aria-label with i18n fallback */
|
|
76
|
+
getIncrementLabel() {
|
|
77
|
+
return this.props.incrementLabel || this.i18n.t('increase');
|
|
78
|
+
}
|
|
69
79
|
ngOnInit() {
|
|
70
80
|
// Ensure initial value is within bounds
|
|
71
81
|
this.clampValue();
|
|
@@ -206,7 +216,7 @@ export class NumberStepperComponent {
|
|
|
206
216
|
[shape]="props.buttonShape || 'round'"
|
|
207
217
|
[disabled]="isAtMin || props.state === states.DISABLED"
|
|
208
218
|
(click)="decrement()"
|
|
209
|
-
[attr.aria-label]="
|
|
219
|
+
[attr.aria-label]="getDecrementLabel()"
|
|
210
220
|
>
|
|
211
221
|
<ion-icon slot="icon-only" name="remove-outline"></ion-icon>
|
|
212
222
|
</ion-button>
|
|
@@ -239,7 +249,7 @@ export class NumberStepperComponent {
|
|
|
239
249
|
[shape]="props.buttonShape || 'round'"
|
|
240
250
|
[disabled]="isAtMax || props.state === states.DISABLED"
|
|
241
251
|
(click)="increment()"
|
|
242
|
-
[attr.aria-label]="
|
|
252
|
+
[attr.aria-label]="getIncrementLabel()"
|
|
243
253
|
>
|
|
244
254
|
<ion-icon slot="icon-only" name="add-outline"></ion-icon>
|
|
245
255
|
</ion-button>
|
|
@@ -306,7 +316,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
306
316
|
[shape]="props.buttonShape || 'round'"
|
|
307
317
|
[disabled]="isAtMin || props.state === states.DISABLED"
|
|
308
318
|
(click)="decrement()"
|
|
309
|
-
[attr.aria-label]="
|
|
319
|
+
[attr.aria-label]="getDecrementLabel()"
|
|
310
320
|
>
|
|
311
321
|
<ion-icon slot="icon-only" name="remove-outline"></ion-icon>
|
|
312
322
|
</ion-button>
|
|
@@ -339,7 +349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
339
349
|
[shape]="props.buttonShape || 'round'"
|
|
340
350
|
[disabled]="isAtMax || props.state === states.DISABLED"
|
|
341
351
|
(click)="increment()"
|
|
342
|
-
[attr.aria-label]="
|
|
352
|
+
[attr.aria-label]="getIncrementLabel()"
|
|
343
353
|
>
|
|
344
354
|
<ion-icon slot="icon-only" name="add-outline"></ion-icon>
|
|
345
355
|
</ion-button>
|
|
@@ -366,4 +376,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
366
376
|
}], valueChange: [{
|
|
367
377
|
type: Output
|
|
368
378
|
}] } });
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItc3RlcHBlci9udW1iZXItc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQXFCLE1BQU0sZUFBZSxDQUFDO0FBQzFGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRXpFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMzRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7QUFHOUMsUUFBUSxDQUFDLEVBQUUsVUFBVSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7QUF5R3hDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FtREc7QUFDSCxNQUFNLE9BQU8sc0JBQXNCO0lBM0puQztRQThKWSxnQkFBVyxHQUFHLElBQUksWUFBWSxFQUE0QixDQUFDO1FBRXJFLFdBQU0sR0FBRyxlQUFlLENBQUM7UUFFakIsc0JBQWlCLEdBQXdCLElBQUksQ0FBQztLQW1IdkQ7SUFqSEMsUUFBUTtRQUNOLHdDQUF3QztRQUN4QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFFbEIsNkJBQTZCO1FBQzdCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENB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T0FBTyxFQUFFO1lBQy9DLHFCQUFxQixFQUFFLENBQUM7WUFDeEIscUJBQXFCLEVBQUUsQ0FBQztTQUN6QixDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsTUFBTSxHQUFHLFNBQVMsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ3JCLE9BQU8sbUJBQW1CLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxHQUFHLENBQUM7UUFDaEQsQ0FBQztRQUNELE9BQU8sMEJBQTBCLENBQUM7SUFDcEMsQ0FBQzsrR0F6SFUsc0JBQXNCO21HQUF0QixzQkFBc0IsbUpBdkp2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBZ0dULDY3RkFqR1MsWUFBWSw4QkFBRSxtQkFBbUIsMFRBQUUsU0FBUyxvUEFBRSxPQUFPLDJKQUFFLFFBQVE7OzRGQXdKOUQsc0JBQXNCO2tCQTNKbEMsU0FBUzsrQkFDRSxvQkFBb0IsY0FDbEIsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ2hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7OEJBd0RRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IElvbkJ1dHRvbiwgSW9uSWNvbiwgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTnVtYmVyU3RlcHBlck1ldGFkYXRhLCBOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbnVtYmVyLXN0ZXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvbklucHV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm51bWJlci1zdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MubGF5b3V0LXZlcnRpY2FsXT1cInByb3BzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbc3R5bGUuLS1zdGVwcGVyLWNvbG9yXT1cImdldENvbG9yKClcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXNldCBidXR0b25zIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJlc2V0cyAmJiBwcm9wcy5wcmVzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1idXR0b25zXCI+XG4gICAgICAgICAgQGZvciAocHJlc2V0IG9mIHByb3BzLnByZXNldHM7IHRyYWNrIHByZXNldC52YWx1ZSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VmFsdWUgPT09IHByZXNldC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb3B1bGFyXT1cInByZXNldC5wb3B1bGFyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZhbHVlKHByZXNldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByZXNldC5sYWJlbCB8fCBwcmVzZXQudmFsdWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gU3RlcHBlciBjb250cm9scyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNvbnRyb2xzXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBkZWNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNaW4gfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmRlY3JlbWVudExhYmVsIHx8ICdEaXNtaW51aXInXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cInJlbW92ZS1vdXRsaW5lXCI+PC9pb24taWNvbj5cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJ2YWx1ZS1kaXNwbGF5XCI+XG4gICAgICAgICAgQGlmIChwcm9wcy5zaG93SW5wdXQgIT09IGZhbHNlICYmIHByb3BzLmVkaXRhYmxlSW5wdXQpIHtcbiAgICAgICAgICAgIDxpb24taW5wdXRcbiAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXG4gICAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJwcm9wcy5jb250cm9sXCJcbiAgICAgICAgICAgICAgW21pbl09XCJwcm9wcy5taW5cIlxuICAgICAgICAgICAgICBbbWF4XT1cInByb3BzLm1heFwiXG4gICAgICAgICAgICAgIFtzdGVwXT1cInByb3BzLnN0ZXAgfHwgMVwiXG4gICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJ2YWx1ZS1pbnB1dFwiXG4gICAgICAgICAgICAgIChpb25CbHVyKT1cIm9uSW5wdXRCbHVyKClcIlxuICAgICAgICAgICAgPjwvaW9uLWlucHV0PlxuICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ2YWx1ZS10ZXh0XCI+e3sgY3VycmVudFZhbHVlIH19PC9zcGFuPlxuICAgICAgICAgIH1cblxuICAgICAgICAgIEBpZiAocHJvcHMudW5pdExhYmVsKSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInVuaXQtbGFiZWxcIj57eyBnZXRVbml0TGFiZWwoKSB9fTwvc3Bhbj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBpbmNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNYXggfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImluY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cInByb3BzLmluY3JlbWVudExhYmVsIHx8ICdBdW1lbnRhcidcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiYWRkLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBQcmljZSBkaXNwbGF5IC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93VG90YWwgJiYgcHJvcHMudW5pdFByaWNlKSB7XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwcmljZS1kaXNwbGF5XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1jYWxjdWxhdGlvblwiPlxuICAgICAgICAgICAge3sgY3VycmVudFZhbHVlIH19IMOXIHt7IGZvcm1hdFByaWNlKHByb3BzLnVuaXRQcmljZSkgfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS1lcXVhbHNcIj49PC9zcGFuPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicHJpY2UtdG90YWxcIj57eyBmb3JtYXRQcmljZSh0b3RhbFByaWNlKSB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIEBpZiAocHJvcHMuaGludCkge1xuICAgICAgICA8c3BhbiBjbGFzcz1cInN0ZXBwZXItaGludFwiPnt7IHByb3BzLmhpbnQgfX08L3NwYW4+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1zdGVwcGVyLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqXG4gKiBBIG51bWJlciBpbnB1dCB3aXRoIGluY3JlbWVudC9kZWNyZW1lbnQgYnV0dG9ucywgaWRlYWwgZm9yIHF1YW50aXR5IHNlbGVjdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBCYXNpYyB1c2FnZVxuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHF1YW50aXR5Q29udHJvbCxcbiAqICAgICBtaW46IDEsXG4gKiAgICAgbWF4OiAxMDBcbiAqICAgfVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByaWNpbmdcbiAqIGBgYGh0bWxcbiAqIDx2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiB0aWNrZXRDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDUwLFxuICogICAgIHVuaXRQcmljZTogMTAsXG4gKiAgICAgY3VycmVuY3k6ICdNWE4nLFxuICogICAgIGN1cnJlbmN5U3ltYm9sOiAnJCcsXG4gKiAgICAgc2hvd1RvdGFsOiB0cnVlLFxuICogICAgIHVuaXRMYWJlbDogJ2JvbGV0b3MnLFxuICogICAgIHVuaXRMYWJlbFNpbmd1bGFyOiAnYm9sZXRvJ1xuICogICB9XCJcbiAqICAgKHZhbHVlQ2hhbmdlKT1cIm9uUXVhbnRpdHlDaGFuZ2UoJGV2ZW50KVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldHNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtbnVtYmVyLXN0ZXBwZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb250cm9sOiB0aWNrZXRDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDEwMCxcbiAqICAgICBzaG93UHJlc2V0czogdHJ1ZSxcbiAqICAgICBwcmVzZXRzOiBbXG4gKiAgICAgICB7IHZhbHVlOiAxIH0sXG4gKiAgICAgICB7IHZhbHVlOiA1LCBwb3B1bGFyOiB0cnVlIH0sXG4gKiAgICAgICB7IHZhbHVlOiAxMCB9LFxuICogICAgICAgeyB2YWx1ZTogMjUgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtbnVtYmVyLXN0ZXBwZXI+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIE51bWJlclN0ZXBwZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XG4gIEBJbnB1dCgpIHByb3BzOiBOdW1iZXJTdGVwcGVyTWV0YWRhdGE7XG5cbiAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQ+KCk7XG5cbiAgc3RhdGVzID0gQ29tcG9uZW50U3RhdGVzO1xuXG4gIHByaXZhdGUgdmFsdWVTdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbiB8IG51bGwgPSBudWxsO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBpbml0aWFsIHZhbHVlIGlzIHdpdGhpbiBib3VuZHNcbiAgICB0aGlzLmNsYW1wVmFsdWUoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlID8/IHRoaXMucHJvcHMubWluID8/IDA7XG4gIH1cblxuICBnZXQgaXNBdE1pbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA8PSB0aGlzLnByb3BzLm1pbjtcbiAgfVxuXG4gIGdldCBpc0F0TWF4KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLm1heCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlID49IHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0IHRvdGFsUHJpY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWUgKiAodGhpcy5wcm9wcy51bml0UHJpY2UgfHwgMCk7XG4gIH1cblxuICBpbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMucHJvcHMuc3RlcCB8fCAxO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWUgKyBzdGVwO1xuICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgZGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnByb3BzLnN0ZXAgfHwgMTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlIC0gc3RlcDtcbiAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbHVlID0gdGhpcy5jbGFtcCh2YWx1ZSk7XG5cbiAgICBpZiAoY2xhbXBlZFZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoY2xhbXBlZFZhbHVlKTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShjbGFtcGVkVmFsdWUsIHByZXZpb3VzVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWwgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbCA9IHRoaXMuY2xhbXAoY3VycmVudFZhbCk7XG4gICAgaWYgKGN1cnJlbnRWYWwgIT09IGNsYW1wZWRWYWwpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShjbGFtcGVkVmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYW1wKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgPCB0aGlzLnByb3BzLm1pbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5wcm9wcy5taW47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1heCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCA+IHRoaXMucHJvcHMubWF4KSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnByb3BzLm1heDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSh2YWx1ZTogbnVtYmVyLCBwcmV2aW91c1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgdG90YWxQcmljZTogdGhpcy5wcm9wcy51bml0UHJpY2UgPyB2YWx1ZSAqIHRoaXMucHJvcHMudW5pdFByaWNlIDogdW5kZWZpbmVkLFxuICAgICAgYXRNaW46IHRoaXMuaXNBdE1pbixcbiAgICAgIGF0TWF4OiB0aGlzLmlzQXRNYXgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0VW5pdExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudFZhbHVlID09PSAxICYmIHRoaXMucHJvcHMudW5pdExhYmVsU2luZ3VsYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnVuaXRMYWJlbFNpbmd1bGFyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy51bml0TGFiZWwgfHwgJyc7XG4gIH1cblxuICBmb3JtYXRQcmljZShhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5wcm9wcy5jdXJyZW5jeVN5bWJvbCB8fCAnJCc7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gYW1vdW50LnRvTG9jYWxlU3RyaW5nKCdlcy1NWCcsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7c3ltYm9sfSR7Zm9ybWF0dGVkfWA7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
|
|
379
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9udW1iZXItc3RlcHBlci9udW1iZXItc3RlcHBlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFxQixNQUFNLGVBQWUsQ0FBQztBQUNsRyxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUV6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7OztBQUc5QyxRQUFRLENBQUMsRUFBRSxVQUFVLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztBQXlHeEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1ERztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUEzSm5DO1FBOEpZLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQTRCLENBQUM7UUFFckUsV0FBTSxHQUFHLGVBQWUsQ0FBQztRQUVqQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLHNCQUFpQixHQUF3QixJQUFJLENBQUM7S0E2SHZEO0lBM0hDLHlE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RSxPQUFPLEVBQUUsUUFBUSxDQUFDLFlBQ2hFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnR1Q7OEJBd0RRLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT3V0cHV0LCBFdmVudEVtaXR0ZXIsIE9uSW5pdCwgT25EZXN0cm95IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uQnV0dG9uLCBJb25JY29uLCBJb25JbnB1dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGFkZE91dGxpbmUsIHJlbW92ZU91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgTnVtYmVyU3RlcHBlck1ldGFkYXRhLCBOdW1iZXJTdGVwcGVyQ2hhbmdlRXZlbnQgfSBmcm9tICcuL3R5cGVzJztcblxuYWRkSWNvbnMoeyBhZGRPdXRsaW5lLCByZW1vdmVPdXRsaW5lIH0pO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbnVtYmVyLXN0ZXBwZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25CdXR0b24sIElvbkljb24sIElvbklucHV0XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cIm51bWJlci1zdGVwcGVyLWNvbnRhaW5lclwiXG4gICAgICBbY2xhc3NdPVwicHJvcHMuY3NzQ2xhc3NcIlxuICAgICAgW2NsYXNzLnNpemUtc21hbGxdPVwicHJvcHMuc2l6ZSA9PT0gJ3NtYWxsJ1wiXG4gICAgICBbY2xhc3Muc2l6ZS1tZWRpdW1dPVwicHJvcHMuc2l6ZSA9PT0gJ21lZGl1bScgfHwgIXByb3BzLnNpemVcIlxuICAgICAgW2NsYXNzLnNpemUtbGFyZ2VdPVwicHJvcHMuc2l6ZSA9PT0gJ2xhcmdlJ1wiXG4gICAgICBbY2xhc3MubGF5b3V0LXZlcnRpY2FsXT1cInByb3BzLmxheW91dCA9PT0gJ3ZlcnRpY2FsJ1wiXG4gICAgICBbY2xhc3MuZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICBbc3R5bGUuLS1zdGVwcGVyLWNvbG9yXT1cImdldENvbG9yKClcIlxuICAgID5cbiAgICAgIEBpZiAocHJvcHMubGFiZWwpIHtcbiAgICAgICAgPGxhYmVsIGNsYXNzPVwic3RlcHBlci1sYWJlbFwiPnt7IGdldExhYmVsKCkgfX08L2xhYmVsPlxuICAgICAgfVxuXG4gICAgICA8IS0tIFByZXNldCBidXR0b25zIC0tPlxuICAgICAgQGlmIChwcm9wcy5zaG93UHJlc2V0cyAmJiBwcm9wcy5wcmVzZXRzPy5sZW5ndGgpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByZXNldC1idXR0b25zXCI+XG4gICAgICAgICAgQGZvciAocHJlc2V0IG9mIHByb3BzLnByZXNldHM7IHRyYWNrIHByZXNldC52YWx1ZSkge1xuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJwcmVzZXQtYnV0dG9uXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmFjdGl2ZV09XCJjdXJyZW50VmFsdWUgPT09IHByZXNldC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtjbGFzcy5wb3B1bGFyXT1cInByZXNldC5wb3B1bGFyXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNldFZhbHVlKHByZXNldC52YWx1ZSlcIlxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwicHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IHByZXNldC5sYWJlbCB8fCBwcmVzZXQudmFsdWUgfX1cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG5cbiAgICAgIDwhLS0gU3RlcHBlciBjb250cm9scyAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJzdGVwcGVyLWNvbnRyb2xzXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgY2xhc3M9XCJzdGVwcGVyLWJ1dHRvbiBkZWNyZW1lbnRcIlxuICAgICAgICAgIFtjb2xvcl09XCJwcm9wcy5jb2xvciB8fCAncHJpbWFyeSdcIlxuICAgICAgICAgIGZpbGw9XCJvdXRsaW5lXCJcbiAgICAgICAgICBbc2hhcGVdPVwicHJvcHMuYnV0dG9uU2hhcGUgfHwgJ3JvdW5kJ1wiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cImlzQXRNaW4gfHwgcHJvcHMuc3RhdGUgPT09IHN0YXRlcy5ESVNBQkxFRFwiXG4gICAgICAgICAgKGNsaWNrKT1cImRlY3JlbWVudCgpXCJcbiAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cImdldERlY3JlbWVudExhYmVsKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwicmVtb3ZlLW91dGxpbmVcIj48L2lvbi1pY29uPlxuICAgICAgICA8L2lvbi1idXR0b24+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cInZhbHVlLWRpc3BsYXlcIj5cbiAgICAgICAgICBAaWYgKHByb3BzLnNob3dJbnB1dCAhPT0gZmFsc2UgJiYgcHJvcHMuZWRpdGFibGVJbnB1dCkge1xuICAgICAgICAgICAgPGlvbi1pbnB1dFxuICAgICAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIlxuICAgICAgICAgICAgICBbbWluXT1cInByb3BzLm1pblwiXG4gICAgICAgICAgICAgIFttYXhdPVwicHJvcHMubWF4XCJcbiAgICAgICAgICAgICAgW3N0ZXBdPVwicHJvcHMuc3RlcCB8fCAxXCJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cInByb3BzLnN0YXRlID09PSBzdGF0ZXMuRElTQUJMRURcIlxuICAgICAgICAgICAgICBjbGFzcz1cInZhbHVlLWlucHV0XCJcbiAgICAgICAgICAgICAgKGlvbkJsdXIpPVwib25JbnB1dEJsdXIoKVwiXG4gICAgICAgICAgICA+PC9pb24taW5wdXQ+XG4gICAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInZhbHVlLXRleHRcIj57eyBjdXJyZW50VmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgQGlmIChwcm9wcy51bml0TGFiZWwpIHtcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidW5pdC1sYWJlbFwiPnt7IGdldFVuaXRMYWJlbCgpIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBjbGFzcz1cInN0ZXBwZXItYnV0dG9uIGluY3JlbWVudFwiXG4gICAgICAgICAgW2NvbG9yXT1cInByb3BzLmNvbG9yIHx8ICdwcmltYXJ5J1wiXG4gICAgICAgICAgZmlsbD1cIm91dGxpbmVcIlxuICAgICAgICAgIFtzaGFwZV09XCJwcm9wcy5idXR0b25TaGFwZSB8fCAncm91bmQnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNBdE1heCB8fCBwcm9wcy5zdGF0ZSA9PT0gc3RhdGVzLkRJU0FCTEVEXCJcbiAgICAgICAgICAoY2xpY2spPVwiaW5jcmVtZW50KClcIlxuICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZ2V0SW5jcmVtZW50TGFiZWwoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJhZGQtb3V0bGluZVwiPjwvaW9uLWljb24+XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIFByaWNlIGRpc3BsYXkgLS0+XG4gICAgICBAaWYgKHByb3BzLnNob3dUb3RhbCAmJiBwcm9wcy51bml0UHJpY2UpIHtcbiAgICAgICAgPGRpdiBjbGFzcz1cInByaWNlLWRpc3BsYXlcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWNhbGN1bGF0aW9uXCI+XG4gICAgICAgICAgICB7eyBjdXJyZW50VmFsdWUgfX0gw5cge3sgZm9ybWF0UHJpY2UocHJvcHMudW5pdFByaWNlKSB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInByaWNlLWVxdWFsc1wiPj08L3NwYW4+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJwcmljZS10b3RhbFwiPnt7IGZvcm1hdFByaWNlKHRvdGFsUHJpY2UpIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIH1cblxuICAgICAgQGlmIChwcm9wcy5oaW50KSB7XG4gICAgICAgIDxzcGFuIGNsYXNzPVwic3RlcHBlci1oaW50XCI+e3sgcHJvcHMuaGludCB9fTwvc3Bhbj5cbiAgICAgIH1cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbnVtYmVyLXN0ZXBwZXIuY29tcG9uZW50LnNjc3MnXSxcbn0pXG4vKipcbiAqIHZhbC1udW1iZXItc3RlcHBlclxuICpcbiAqIEEgbnVtYmVyIGlucHV0IHdpdGggaW5jcmVtZW50L2RlY3JlbWVudCBidXR0b25zLCBpZGVhbCBmb3IgcXVhbnRpdHkgc2VsZWN0aW9uLlxuICpcbiAqIEBleGFtcGxlIEJhc2ljIHVzYWdlXG4gKiBgYGBodG1sXG4gKiA8dmFsLW51bWJlci1zdGVwcGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgY29udHJvbDogcXVhbnRpdHlDb250cm9sLFxuICogICAgIG1pbjogMSxcbiAqICAgICBtYXg6IDEwMFxuICogICB9XCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJpY2luZ1xuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHRpY2tldENvbnRyb2wsXG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogNTAsXG4gKiAgICAgdW5pdFByaWNlOiAxMCxcbiAqICAgICBjdXJyZW5jeTogJ01YTicsXG4gKiAgICAgY3VycmVuY3lTeW1ib2w6ICckJyxcbiAqICAgICBzaG93VG90YWw6IHRydWUsXG4gKiAgICAgdW5pdExhYmVsOiAnYm9sZXRvcycsXG4gKiAgICAgdW5pdExhYmVsU2luZ3VsYXI6ICdib2xldG8nXG4gKiAgIH1cIlxuICogICAodmFsdWVDaGFuZ2UpPVwib25RdWFudGl0eUNoYW5nZSgkZXZlbnQpXCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlIFdpdGggcHJlc2V0c1xuICogYGBgaHRtbFxuICogPHZhbC1udW1iZXItc3RlcHBlclxuICogICBbcHJvcHNdPVwie1xuICogICAgIGNvbnRyb2w6IHRpY2tldENvbnRyb2wsXG4gKiAgICAgbWluOiAxLFxuICogICAgIG1heDogMTAwLFxuICogICAgIHNob3dQcmVzZXRzOiB0cnVlLFxuICogICAgIHByZXNldHM6IFtcbiAqICAgICAgIHsgdmFsdWU6IDEgfSxcbiAqICAgICAgIHsgdmFsdWU6IDUsIHBvcHVsYXI6IHRydWUgfSxcbiAqICAgICAgIHsgdmFsdWU6IDEwIH0sXG4gKiAgICAgICB7IHZhbHVlOiAyNSB9XG4gKiAgICAgXVxuICogICB9XCJcbiAqID48L3ZhbC1udW1iZXItc3RlcHBlcj5cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgTnVtYmVyU3RlcHBlckNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgQElucHV0KCkgcHJvcHM6IE51bWJlclN0ZXBwZXJNZXRhZGF0YTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPE51bWJlclN0ZXBwZXJDaGFuZ2VFdmVudD4oKTtcblxuICBzdGF0ZXMgPSBDb21wb25lbnRTdGF0ZXM7XG5cbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSB2YWx1ZVN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIEdldCBkZWNyZW1lbnQgYnV0dG9uIGFyaWEtbGFiZWwgd2l0aCBpMThuIGZhbGxiYWNrICovXG4gIGdldERlY3JlbWVudExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGVjcmVtZW50TGFiZWwgfHwgdGhpcy5pMThuLnQoJ2RlY3JlYXNlJyk7XG4gIH1cblxuICAvKiogR2V0IGluY3JlbWVudCBidXR0b24gYXJpYS1sYWJlbCB3aXRoIGkxOG4gZmFsbGJhY2sgKi9cbiAgZ2V0SW5jcmVtZW50TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5pbmNyZW1lbnRMYWJlbCB8fCB0aGlzLmkxOG4udCgnaW5jcmVhc2UnKTtcbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIC8vIEVuc3VyZSBpbml0aWFsIHZhbHVlIGlzIHdpdGhpbiBib3VuZHNcbiAgICB0aGlzLmNsYW1wVmFsdWUoKTtcblxuICAgIC8vIFN1YnNjcmliZSB0byB2YWx1ZSBjaGFuZ2VzXG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbiA9IHRoaXMucHJvcHMuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZVN1YnNjcmlwdGlvbj8udW5zdWJzY3JpYmUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50VmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5wcm9wcy5jb250cm9sLnZhbHVlID8/IHRoaXMucHJvcHMubWluID8/IDA7XG4gIH1cblxuICBnZXQgaXNBdE1pbigpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgIHJldHVybiB0aGlzLmN1cnJlbnRWYWx1ZSA8PSB0aGlzLnByb3BzLm1pbjtcbiAgfVxuXG4gIGdldCBpc0F0TWF4KCk6IGJvb2xlYW4ge1xuICAgIGlmICh0aGlzLnByb3BzLm1heCA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlID49IHRoaXMucHJvcHMubWF4O1xuICB9XG5cbiAgZ2V0IHRvdGFsUHJpY2UoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWUgKiAodGhpcy5wcm9wcy51bml0UHJpY2UgfHwgMCk7XG4gIH1cblxuICBpbmNyZW1lbnQoKTogdm9pZCB7XG4gICAgY29uc3Qgc3RlcCA9IHRoaXMucHJvcHMuc3RlcCB8fCAxO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWUgKyBzdGVwO1xuICAgIHRoaXMuc2V0VmFsdWUobmV3VmFsdWUpO1xuICB9XG5cbiAgZGVjcmVtZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IHN0ZXAgPSB0aGlzLnByb3BzLnN0ZXAgfHwgMTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY3VycmVudFZhbHVlIC0gc3RlcDtcbiAgICB0aGlzLnNldFZhbHVlKG5ld1ZhbHVlKTtcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwcmV2aW91c1ZhbHVlID0gdGhpcy5jdXJyZW50VmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbHVlID0gdGhpcy5jbGFtcCh2YWx1ZSk7XG5cbiAgICBpZiAoY2xhbXBlZFZhbHVlICE9PSBwcmV2aW91c1ZhbHVlKSB7XG4gICAgICB0aGlzLnByb3BzLmNvbnRyb2wuc2V0VmFsdWUoY2xhbXBlZFZhbHVlKTtcbiAgICAgIHRoaXMuZW1pdENoYW5nZShjbGFtcGVkVmFsdWUsIHByZXZpb3VzVmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uSW5wdXRCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMuY2xhbXBWYWx1ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGFtcFZhbHVlKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRWYWwgPSB0aGlzLnByb3BzLmNvbnRyb2wudmFsdWU7XG4gICAgY29uc3QgY2xhbXBlZFZhbCA9IHRoaXMuY2xhbXAoY3VycmVudFZhbCk7XG4gICAgaWYgKGN1cnJlbnRWYWwgIT09IGNsYW1wZWRWYWwpIHtcbiAgICAgIHRoaXMucHJvcHMuY29udHJvbC5zZXRWYWx1ZShjbGFtcGVkVmFsKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsYW1wKHZhbHVlOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGxldCByZXN1bHQgPSB2YWx1ZTtcbiAgICBpZiAodGhpcy5wcm9wcy5taW4gIT09IHVuZGVmaW5lZCAmJiByZXN1bHQgPCB0aGlzLnByb3BzLm1pbikge1xuICAgICAgcmVzdWx0ID0gdGhpcy5wcm9wcy5taW47XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLm1heCAhPT0gdW5kZWZpbmVkICYmIHJlc3VsdCA+IHRoaXMucHJvcHMubWF4KSB7XG4gICAgICByZXN1bHQgPSB0aGlzLnByb3BzLm1heDtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZW1pdENoYW5nZSh2YWx1ZTogbnVtYmVyLCBwcmV2aW91c1ZhbHVlOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQoe1xuICAgICAgdmFsdWUsXG4gICAgICBwcmV2aW91c1ZhbHVlLFxuICAgICAgdG90YWxQcmljZTogdGhpcy5wcm9wcy51bml0UHJpY2UgPyB2YWx1ZSAqIHRoaXMucHJvcHMudW5pdFByaWNlIDogdW5kZWZpbmVkLFxuICAgICAgYXRNaW46IHRoaXMuaXNBdE1pbixcbiAgICAgIGF0TWF4OiB0aGlzLmlzQXRNYXgsXG4gICAgfSk7XG4gIH1cblxuICBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmxhYmVsIHx8ICcnO1xuICB9XG5cbiAgZ2V0VW5pdExhYmVsKCk6IHN0cmluZyB7XG4gICAgaWYgKHRoaXMuY3VycmVudFZhbHVlID09PSAxICYmIHRoaXMucHJvcHMudW5pdExhYmVsU2luZ3VsYXIpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnVuaXRMYWJlbFNpbmd1bGFyO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5wcm9wcy51bml0TGFiZWwgfHwgJyc7XG4gIH1cblxuICBmb3JtYXRQcmljZShhbW91bnQ6IG51bWJlcik6IHN0cmluZyB7XG4gICAgY29uc3Qgc3ltYm9sID0gdGhpcy5wcm9wcy5jdXJyZW5jeVN5bWJvbCB8fCAnJCc7XG4gICAgY29uc3QgZm9ybWF0dGVkID0gYW1vdW50LnRvTG9jYWxlU3RyaW5nKCdlcy1NWCcsIHtcbiAgICAgIG1pbmltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICAgIG1heGltdW1GcmFjdGlvbkRpZ2l0czogMixcbiAgICB9KTtcbiAgICByZXR1cm4gYCR7c3ltYm9sfSR7Zm9ybWF0dGVkfWA7XG4gIH1cblxuICBnZXRDb2xvcigpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb3BzLmNvbG9yKSB7XG4gICAgICByZXR1cm4gYHZhcigtLWlvbi1jb2xvci0ke3RoaXMucHJvcHMuY29sb3J9KWA7XG4gICAgfVxuICAgIHJldHVybiAndmFyKC0taW9uLWNvbG9yLXByaW1hcnkpJztcbiAgfVxufVxuIl19
|
|
@@ -41,8 +41,9 @@ export class DocsTocComponent {
|
|
|
41
41
|
// Reactive state
|
|
42
42
|
this.activeId = signal('');
|
|
43
43
|
this.flatItems = signal([]);
|
|
44
|
-
this.observer = null;
|
|
45
44
|
this.headingElements = [];
|
|
45
|
+
this.scrollHandler = null;
|
|
46
|
+
this.rafId = null;
|
|
46
47
|
}
|
|
47
48
|
ngOnInit() {
|
|
48
49
|
this.updateFlatItems();
|
|
@@ -132,34 +133,57 @@ export class DocsTocComponent {
|
|
|
132
133
|
.filter((el) => el !== null);
|
|
133
134
|
if (this.headingElements.length === 0)
|
|
134
135
|
return;
|
|
135
|
-
|
|
136
|
-
|
|
136
|
+
// Set initial active item
|
|
137
|
+
this.updateActiveHeading();
|
|
138
|
+
// Use scroll event with requestAnimationFrame for performance
|
|
137
139
|
this.ngZone.runOutsideAngular(() => {
|
|
138
|
-
this.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
.filter(entry => entry.isIntersecting)
|
|
142
|
-
.sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
143
|
-
if (visibleEntries.length > 0) {
|
|
144
|
-
const activeEntry = visibleEntries[0];
|
|
145
|
-
this.ngZone.run(() => {
|
|
146
|
-
this.activeId.set(activeEntry.target.id);
|
|
147
|
-
this.sectionChange.emit(activeEntry.target.id);
|
|
148
|
-
});
|
|
140
|
+
this.scrollHandler = () => {
|
|
141
|
+
if (this.rafId) {
|
|
142
|
+
cancelAnimationFrame(this.rafId);
|
|
149
143
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
this.observer?.observe(el);
|
|
156
|
-
});
|
|
144
|
+
this.rafId = requestAnimationFrame(() => {
|
|
145
|
+
this.updateActiveHeading();
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
window.addEventListener('scroll', this.scrollHandler, { passive: true });
|
|
157
149
|
});
|
|
158
150
|
}
|
|
151
|
+
updateActiveHeading() {
|
|
152
|
+
const offsetTop = this.props.offsetTop ?? 100;
|
|
153
|
+
const scrollY = window.scrollY;
|
|
154
|
+
// Find the heading that is currently at or above the offset point
|
|
155
|
+
let activeHeading = null;
|
|
156
|
+
for (const heading of this.headingElements) {
|
|
157
|
+
const rect = heading.getBoundingClientRect();
|
|
158
|
+
const headingTop = rect.top + scrollY;
|
|
159
|
+
// If heading is at or above the trigger point (scrollY + offset)
|
|
160
|
+
if (headingTop <= scrollY + offsetTop + 10) {
|
|
161
|
+
activeHeading = heading;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Headings are in order, so we can stop once we find one below
|
|
165
|
+
break;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
// If no heading is above the trigger point, use the first one
|
|
169
|
+
if (!activeHeading && this.headingElements.length > 0) {
|
|
170
|
+
activeHeading = this.headingElements[0];
|
|
171
|
+
}
|
|
172
|
+
if (activeHeading && activeHeading.id !== this.activeId()) {
|
|
173
|
+
this.ngZone.run(() => {
|
|
174
|
+
this.activeId.set(activeHeading.id);
|
|
175
|
+
this.sectionChange.emit(activeHeading.id);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
159
179
|
destroyScrollSpy() {
|
|
160
|
-
if (this.
|
|
161
|
-
this.
|
|
162
|
-
this.
|
|
180
|
+
if (this.scrollHandler) {
|
|
181
|
+
window.removeEventListener('scroll', this.scrollHandler);
|
|
182
|
+
this.scrollHandler = null;
|
|
183
|
+
}
|
|
184
|
+
if (this.rafId) {
|
|
185
|
+
cancelAnimationFrame(this.rafId);
|
|
186
|
+
this.rafId = null;
|
|
163
187
|
}
|
|
164
188
|
this.headingElements = [];
|
|
165
189
|
}
|
|
@@ -252,4 +276,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
252
276
|
}], sectionChange: [{
|
|
253
277
|
type: Output
|
|
254
278
|
}] } });
|
|
255
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUVQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBWTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWHpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLGFBQVEsR0FBZ0MsSUFBSSxDQUFDO1FBQzdDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztJQUVQLENBQUM7SUFFdEMsUUFBUTtRQUNOLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUN6QixDQUFDO0lBRUQsZUFBZTtRQUNiLCtCQUErQjtRQUMvQixVQUFVLENBQUMsR0FBRyxFQUFFO1lBQ2QsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO2dCQUM1QixJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUNqQyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3hCLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNWLENBQUM7SUFFRCxX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bic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxuICBzaWduYWwsXG4gIGNvbXB1dGVkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IERvY3NUb2NNZXRhZGF0YSwgRG9jc1RvY0l0ZW0gfSBmcm9tICcuL3R5cGVzJztcblxuLyoqXG4gKiB2YWwtZG9jcy10b2NcbiAqXG4gKiBBIHRhYmxlIG9mIGNvbnRlbnRzIGNvbXBvbmVudCB3aXRoIHNjcm9sbCBzcHkgZnVuY3Rpb25hbGl0eS5cbiAqIEF1dG9tYXRpY2FsbHkgaGlnaGxpZ2h0cyB0aGUgY3VycmVudCBzZWN0aW9uIGJhc2VkIG9uIHNjcm9sbCBwb3NpdGlvbi5cbiAqXG4gKiBAZXhhbXBsZSBNYW51YWwgaXRlbXNcbiAqIGBgYGh0bWxcbiAqIDx2YWwtZG9jcy10b2NcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ09uIHRoaXMgcGFnZScsXG4gKiAgICAgaXRlbXM6IFtcbiAqICAgICAgIHsgaWQ6ICdvdmVydmlldycsIGxhYmVsOiAnT3ZlcnZpZXcnLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ2luc3RhbGxhdGlvbicsIGxhYmVsOiAnSW5zdGFsbGF0aW9uJywgbGV2ZWw6IDEgfSxcbiAqICAgICAgIHsgaWQ6ICducG0nLCBsYWJlbDogJ1VzaW5nIG5wbScsIGxldmVsOiAyIH0sXG4gKiAgICAgICB7IGlkOiAneWFybicsIGxhYmVsOiAnVXNpbmcgeWFybicsIGxldmVsOiAyIH1cbiAqICAgICBdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgQXV0by1nZW5lcmF0ZWQgZnJvbSBoZWFkaW5nc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIGF1dG9HZW5lcmF0ZTogdHJ1ZSxcbiAqICAgICBjb250YWluZXJTZWxlY3RvcjogJy5hcnRpY2xlLWNvbnRlbnQnLFxuICogICAgIGhlYWRpbmdMZXZlbHM6IFsyLCAzXVxuICogICB9XCJcbiAqID48L3ZhbC1kb2NzLXRvYz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtZG9jcy10b2MnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8bmF2XG4gICAgICBjbGFzcz1cImRvY3MtdG9jXCJcbiAgICAgIFtjbGFzc109XCJwcm9wcy5jc3NDbGFzc1wiXG4gICAgICByb2xlPVwibmF2aWdhdGlvblwiXG4gICAgICBhcmlhLWxhYmVsPVwiVGFibGUgb2YgY29udGVudHNcIlxuICAgID5cbiAgICAgIEBpZiAoIXByb3BzLmhpZGVUaXRsZSkge1xuICAgICAgICA8aDQgY2xhc3M9XCJkb2NzLXRvY19fdGl0bGVcIj57eyBwcm9wcy50aXRsZSB8fCAnQ29udGVudHMnIH19PC9oND5cbiAgICAgIH1cblxuICAgICAgPHVsIGNsYXNzPVwiZG9jcy10b2NfX2xpc3RcIj5cbiAgICAgICAgQGZvciAoaXRlbSBvZiBmbGF0SXRlbXMoKTsgdHJhY2sgaXRlbS5pZCkge1xuICAgICAgICAgIDxsaVxuICAgICAgICAgICAgY2xhc3M9XCJkb2NzLXRvY19faXRlbVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTFdPVwiaXRlbS5sZXZlbCA9PT0gMVwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTJdPVwiaXRlbS5sZXZlbCA9PT0gMlwiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWxldmVsLTNdPVwiaXRlbS5sZXZlbCA9PT0gM1wiXG4gICAgICAgICAgICBbY2xhc3MuZG9jcy10b2NfX2l0ZW0tLWFjdGl2ZV09XCJhY3RpdmVJZCgpID09PSBpdGVtLmlkXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19saW5rXCJcbiAgICAgICAgICAgICAgW2hyZWZdPVwiJyMnICsgaXRlbS5pZFwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJzY3JvbGxUb1NlY3Rpb24oJGV2ZW50LCBpdGVtLmlkKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IGl0ZW0ubGFiZWwgfX1cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICA8L2xpPlxuICAgICAgICB9XG4gICAgICA8L3VsPlxuICAgIDwvbmF2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9kb2NzLXRvYy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBEb2NzVG9jQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdCB7XG4gIEBJbnB1dCgpIHByb3BzOiBEb2NzVG9jTWV0YWRhdGEgPSB7fTtcblxuICBAT3V0cHV0KCkgc2VjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIC8vIFJlYWN0aXZlIHN0YXRlXG4gIHByb3RlY3RlZCBhY3RpdmVJZCA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHJvdGVjdGVkIGZsYXRJdGVtcyA9IHNpZ25hbDxEb2NzVG9jSXRlbVtdPihbXSk7XG5cbiAgcHJpdmF0ZSBvYnNlcnZlcjogSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBoZWFkaW5nRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhdEl0ZW1zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nZW5lcmF0ZVRvY0Zyb21IZWFkaW5ncygpLCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGbGF0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXRlbXMpIHtcbiAgICAgIHRoaXMuZmxhdEl0ZW1zLnNldCh0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLnByb3BzLml0ZW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IERvY3NUb2NJdGVtW10pOiBEb2NzVG9jSXRlbVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBEb2NzVG9jSXRlbVtdKSA9PiB7XG4gICAgICBpdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLnByb3BzLmNvbnRhaW5lclNlbGVjdG9yIHx8ICcuZG9jcy1sYXlvdXRfX2NvbnRlbnQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2RvY3MtdG9jXSBDb250YWluZXIgbm90IGZvdW5kOiAke3NlbGVjdG9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVscyA9IHRoaXMucHJvcHMuaGVhZGluZ0xldmVscyB8fCBbMiwgM107XG4gICAgY29uc3QgaGVhZGluZ1NlbGVjdG9yID0gbGV2ZWxzLm1hcChsID0+IGBoJHtsfWApLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaGVhZGluZ3MgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChoZWFkaW5nU2VsZWN0b3IpO1xuXG4gICAgY29uc3QgaXRlbXM6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBoZWFkaW5ncy5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhlYWRpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAvLyBHZW5lcmF0ZSBJRCBpZiBub3QgcHJlc2VudFxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IHRoaXMuZ2VuZXJhdGVJZChlbC50ZXh0Q29udGVudCB8fCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxldmVsID0gcGFyc2VJbnQoZWwudGFnTmFtZVsxXSwgMTApO1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgbGFiZWw6IGVsLnRleHRDb250ZW50Py50cmltKCkgfHwgJycsXG4gICAgICAgIGxldmVsOiBsZXZlbCAtIDEsIC8vIGgyID0gbGV2ZWwgMSwgaDMgPSBsZXZlbCAyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmxhdEl0ZW1zLnNldChpdGVtcyk7XG4gICAgLy8gUmUtc2V0dXAgc2Nyb2xsIHNweSB3aXRoIG5ldyBpdGVtc1xuICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJZCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpXG4gICAgICAuc3Vic3RyaW5nKDAsIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U2Nyb2xsU3B5KCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gQ29sbGVjdCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5oZWFkaW5nRWxlbWVudHMgPSBpdGVtc1xuICAgICAgLm1hcChpdGVtID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0uaWQpKVxuICAgICAgLmZpbHRlcigoZWwpOiBlbCBpcyBIVE1MRWxlbWVudCA9PiBlbCAhPT0gbnVsbCk7XG5cbiAgICBpZiAodGhpcy5oZWFkaW5nRWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLnByb3BzLm9mZnNldFRvcCA/PyAxMDA7XG5cbiAgICAvLyBVc2UgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgZm9yIHNjcm9sbCBzcHlcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLm9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgICBlbnRyaWVzID0+IHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCB2aXNpYmxlIGhlYWRpbmdcbiAgICAgICAgICBjb25zdCB2aXNpYmxlRW50cmllcyA9IGVudHJpZXNcbiAgICAgICAgICAgIC5maWx0ZXIoZW50cnkgPT4gZW50cnkuaXNJbnRlcnNlY3RpbmcpXG4gICAgICAgICAgICAuc29ydCgoYSwgYikgPT4gYS5ib3VuZGluZ0NsaWVudFJlY3QudG9wIC0gYi5ib3VuZGluZ0NsaWVudFJlY3QudG9wKTtcblxuICAgICAgICAgIGlmICh2aXNpYmxlRW50cmllcy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmVFbnRyeSA9IHZpc2libGVFbnRyaWVzWzBdO1xuICAgICAgICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5hY3RpdmVJZC5zZXQoYWN0aXZlRW50cnkudGFyZ2V0LmlkKTtcbiAgICAgICAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlRW50cnkudGFyZ2V0LmlkKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHJvb3RNYXJnaW46IGAtJHtvZmZzZXRUb3B9cHggMHB4IC03MCUgMHB4YCxcbiAgICAgICAgICB0aHJlc2hvbGQ6IDAsXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICB0aGlzLm9ic2VydmVyPy5vYnNlcnZlKGVsKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9ic2VydmVyKSB7XG4gICAgICB0aGlzLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHRoaXMub2JzZXJ2ZXIgPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmhlYWRpbmdFbGVtZW50cyA9IFtdO1xuICB9XG5cbiAgc2Nyb2xsVG9TZWN0aW9uKGV2ZW50OiBFdmVudCwgaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpO1xuICAgIGlmICghZWxlbWVudCkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb2Zmc2V0VG9wID0gdGhpcy5wcm9wcy5vZmZzZXRUb3AgPz8gMTAwO1xuXG4gICAgY29uc3QgdG9wID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3AgKyB3aW5kb3cuc2Nyb2xsWSAtIG9mZnNldFRvcDtcblxuICAgIHdpbmRvdy5zY3JvbGxUbyh7XG4gICAgICB0b3AsXG4gICAgICBiZWhhdmlvcjogJ3Ntb290aCcsXG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgYWN0aXZlIGltbWVkaWF0ZWx5IGZvciBiZXR0ZXIgVVhcbiAgICB0aGlzLmFjdGl2ZUlkLnNldChpZCk7XG5cbiAgICAvLyBVcGRhdGUgVVJMIGhhc2ggd2l0aG91dCBqdW1waW5nXG4gICAgaGlzdG9yeS5wdXNoU3RhdGUobnVsbCwgJycsIGAjJHtpZH1gKTtcbiAgfVxufVxuIl19
|
|
279
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jcy10b2MuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9kb2NzLXRvYy9kb2NzLXRvYy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBT1osTUFBTSxHQUNQLE1BQU0sZUFBZSxDQUFDOztBQUd2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCRztBQXVDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBYTNCLFlBQW9CLE1BQWM7UUFBZCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBWnpCLFVBQUssR0FBb0IsRUFBRSxDQUFDO1FBRTNCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUVyRCxpQkFBaUI7UUFDUCxhQUFRLEdBQUcsTUFBTSxDQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQzlCLGNBQVMsR0FBRyxNQUFNLENBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBRXhDLG9CQUFlLEdBQWtCLEVBQUUsQ0FBQztRQUNwQyxrQkFBYSxHQUF3QixJQUFJLENBQUM7UUFDMUMsVUFBSyxHQUFrQixJQUFJLENBQUM7SUFFQyxDQUFDO0lBRXRDLFFBQVE7UUFDTixJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVELGVBQWU7UUFDYiwrQkFBK0I7UUFDL0IsVUFBVSxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDNUIsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7WUFDakMsQ0FBQztZQUNELElBQUksQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN4QixDQUFDLEVBQUUsR0FB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QUMscUJBQXFCLEVBQUUsQ0FBQyxHQUFHLEdBQUcsTUFBTSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUM7UUFFN0UsTUFBTSxDQUFDLFFBQVEsQ0FBQztZQUNkLEdBQUc7WUFDSCxRQUFRLEVBQUUsUUFBUTtTQUNuQixDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFdEIsa0NBQWtDO1FBQ2xDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0F6TVUsZ0JBQWdCO21HQUFoQixnQkFBZ0Isc0tBbENqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVCxpZ0RBaENTLFlBQVk7OzRGQW1DWCxnQkFBZ0I7a0JBdEM1QixTQUFTOytCQUNFLGNBQWMsY0FDWixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQStCVDsyRUFJUSxLQUFLO3NCQUFiLEtBQUs7Z0JBRUksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICBDb21wb25lbnQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgT25Jbml0LFxuICBPbkRlc3Ryb3ksXG4gIE9uQ2hhbmdlcyxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgTmdab25lLFxuICBzaWduYWwsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRG9jc1RvY01ldGFkYXRhLCBEb2NzVG9jSXRlbSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vKipcbiAqIHZhbC1kb2NzLXRvY1xuICpcbiAqIEEgdGFibGUgb2YgY29udGVudHMgY29tcG9uZW50IHdpdGggc2Nyb2xsIHNweSBmdW5jdGlvbmFsaXR5LlxuICogQXV0b21hdGljYWxseSBoaWdobGlnaHRzIHRoZSBjdXJyZW50IHNlY3Rpb24gYmFzZWQgb24gc2Nyb2xsIHBvc2l0aW9uLlxuICpcbiAqIEBleGFtcGxlIE1hbnVhbCBpdGVtc1xuICogYGBgaHRtbFxuICogPHZhbC1kb2NzLXRvY1xuICogICBbcHJvcHNdPVwie1xuICogICAgIHRpdGxlOiAnT24gdGhpcyBwYWdlJyxcbiAqICAgICBpdGVtczogW1xuICogICAgICAgeyBpZDogJ292ZXJ2aWV3JywgbGFiZWw6ICdPdmVydmlldycsIGxldmVsOiAxIH0sXG4gKiAgICAgICB7IGlkOiAnaW5zdGFsbGF0aW9uJywgbGFiZWw6ICdJbnN0YWxsYXRpb24nLCBsZXZlbDogMSB9LFxuICogICAgICAgeyBpZDogJ25wbScsIGxhYmVsOiAnVXNpbmcgbnBtJywgbGV2ZWw6IDIgfSxcbiAqICAgICAgIHsgaWQ6ICd5YXJuJywgbGFiZWw6ICdVc2luZyB5YXJuJywgbGV2ZWw6IDIgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiA+PC92YWwtZG9jcy10b2M+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBBdXRvLWdlbmVyYXRlZCBmcm9tIGhlYWRpbmdzXG4gKiBgYGBodG1sXG4gKiA8dmFsLWRvY3MtdG9jXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgYXV0b0dlbmVyYXRlOiB0cnVlLFxuICogICAgIGNvbnRhaW5lclNlbGVjdG9yOiAnLmFydGljbGUtY29udGVudCcsXG4gKiAgICAgaGVhZGluZ0xldmVsczogWzIsIDNdXG4gKiAgIH1cIlxuICogPjwvdmFsLWRvY3MtdG9jPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1kb2NzLXRvYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGVdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxuYXZcbiAgICAgIGNsYXNzPVwiZG9jcy10b2NcIlxuICAgICAgW2NsYXNzXT1cInByb3BzLmNzc0NsYXNzXCJcbiAgICAgIHJvbGU9XCJuYXZpZ2F0aW9uXCJcbiAgICAgIGFyaWEtbGFiZWw9XCJUYWJsZSBvZiBjb250ZW50c1wiXG4gICAgPlxuICAgICAgQGlmICghcHJvcHMuaGlkZVRpdGxlKSB7XG4gICAgICAgIDxoNCBjbGFzcz1cImRvY3MtdG9jX190aXRsZVwiPnt7IHByb3BzLnRpdGxlIHx8ICdDb250ZW50cycgfX08L2g0PlxuICAgICAgfVxuXG4gICAgICA8dWwgY2xhc3M9XCJkb2NzLXRvY19fbGlzdFwiPlxuICAgICAgICBAZm9yIChpdGVtIG9mIGZsYXRJdGVtcygpOyB0cmFjayBpdGVtLmlkKSB7XG4gICAgICAgICAgPGxpXG4gICAgICAgICAgICBjbGFzcz1cImRvY3MtdG9jX19pdGVtXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMV09XCJpdGVtLmxldmVsID09PSAxXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtMl09XCJpdGVtLmxldmVsID09PSAyXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tbGV2ZWwtM109XCJpdGVtLmxldmVsID09PSAzXCJcbiAgICAgICAgICAgIFtjbGFzcy5kb2NzLXRvY19faXRlbS0tYWN0aXZlXT1cImFjdGl2ZUlkKCkgPT09IGl0ZW0uaWRcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhXG4gICAgICAgICAgICAgIGNsYXNzPVwiZG9jcy10b2NfX2xpbmtcIlxuICAgICAgICAgICAgICBbaHJlZl09XCInIycgKyBpdGVtLmlkXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInNjcm9sbFRvU2VjdGlvbigkZXZlbnQsIGl0ZW0uaWQpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgaXRlbS5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hPlxuICAgICAgICAgIDwvbGk+XG4gICAgICAgIH1cbiAgICAgIDwvdWw+XG4gICAgPC9uYXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2RvY3MtdG9jLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIERvY3NUb2NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHJvcHM6IERvY3NUb2NNZXRhZGF0YSA9IHt9O1xuXG4gIEBPdXRwdXQoKSBzZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgLy8gUmVhY3RpdmUgc3RhdGVcbiAgcHJvdGVjdGVkIGFjdGl2ZUlkID0gc2lnbmFsPHN0cmluZz4oJycpO1xuICBwcm90ZWN0ZWQgZmxhdEl0ZW1zID0gc2lnbmFsPERvY3NUb2NJdGVtW10+KFtdKTtcblxuICBwcml2YXRlIGhlYWRpbmdFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuICBwcml2YXRlIHNjcm9sbEhhbmRsZXI6ICgoKSA9PiB2b2lkKSB8IG51bGwgPSBudWxsO1xuICBwcml2YXRlIHJhZklkOiBudW1iZXIgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7fVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMudXBkYXRlRmxhdEl0ZW1zKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gRGVsYXkgdG8gZW5zdXJlIERPTSBpcyByZWFkeVxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzWydwcm9wcyddKSB7XG4gICAgICB0aGlzLnVwZGF0ZUZsYXRJdGVtcygpO1xuICAgICAgaWYgKHRoaXMucHJvcHMuYXV0b0dlbmVyYXRlKSB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5nZW5lcmF0ZVRvY0Zyb21IZWFkaW5ncygpLCAxMDApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuZGVzdHJveVNjcm9sbFNweSgpO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVGbGF0SXRlbXMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMucHJvcHMuaXRlbXMpIHtcbiAgICAgIHRoaXMuZmxhdEl0ZW1zLnNldCh0aGlzLmZsYXR0ZW5JdGVtcyh0aGlzLnByb3BzLml0ZW1zKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBmbGF0dGVuSXRlbXMoaXRlbXM6IERvY3NUb2NJdGVtW10pOiBEb2NzVG9jSXRlbVtdIHtcbiAgICBjb25zdCByZXN1bHQ6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBjb25zdCBmbGF0dGVuID0gKGl0ZW1MaXN0OiBEb2NzVG9jSXRlbVtdKSA9PiB7XG4gICAgICBpdGVtTGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICByZXN1bHQucHVzaChpdGVtKTtcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4/Lmxlbmd0aCkge1xuICAgICAgICAgIGZsYXR0ZW4oaXRlbS5jaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH07XG4gICAgZmxhdHRlbihpdGVtcyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVUb2NGcm9tSGVhZGluZ3MoKTogdm9pZCB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSB0aGlzLnByb3BzLmNvbnRhaW5lclNlbGVjdG9yIHx8ICcuZG9jcy1sYXlvdXRfX2NvbnRlbnQnO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIGNvbnNvbGUud2FybihgW2RvY3MtdG9jXSBDb250YWluZXIgbm90IGZvdW5kOiAke3NlbGVjdG9yfWApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGxldmVscyA9IHRoaXMucHJvcHMuaGVhZGluZ0xldmVscyB8fCBbMiwgM107XG4gICAgY29uc3QgaGVhZGluZ1NlbGVjdG9yID0gbGV2ZWxzLm1hcChsID0+IGBoJHtsfWApLmpvaW4oJywgJyk7XG4gICAgY29uc3QgaGVhZGluZ3MgPSBjb250YWluZXIucXVlcnlTZWxlY3RvckFsbChoZWFkaW5nU2VsZWN0b3IpO1xuXG4gICAgY29uc3QgaXRlbXM6IERvY3NUb2NJdGVtW10gPSBbXTtcbiAgICBoZWFkaW5ncy5mb3JFYWNoKChoZWFkaW5nOiBFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGhlYWRpbmcgYXMgSFRNTEVsZW1lbnQ7XG4gICAgICAvLyBHZW5lcmF0ZSBJRCBpZiBub3QgcHJlc2VudFxuICAgICAgaWYgKCFlbC5pZCkge1xuICAgICAgICBlbC5pZCA9IHRoaXMuZ2VuZXJhdGVJZChlbC50ZXh0Q29udGVudCB8fCAnJyk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxldmVsID0gcGFyc2VJbnQoZWwudGFnTmFtZVsxXSwgMTApO1xuICAgICAgaXRlbXMucHVzaCh7XG4gICAgICAgIGlkOiBlbC5pZCxcbiAgICAgICAgbGFiZWw6IGVsLnRleHRDb250ZW50Py50cmltKCkgfHwgJycsXG4gICAgICAgIGxldmVsOiBsZXZlbCAtIDEsIC8vIGgyID0gbGV2ZWwgMSwgaDMgPSBsZXZlbCAyXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuZmxhdEl0ZW1zLnNldChpdGVtcyk7XG4gICAgLy8gUmUtc2V0dXAgc2Nyb2xsIHNweSB3aXRoIG5ldyBpdGVtc1xuICAgIHRoaXMuc2V0dXBTY3JvbGxTcHkoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2VuZXJhdGVJZCh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0ZXh0XG4gICAgICAudG9Mb3dlckNhc2UoKVxuICAgICAgLnRyaW0oKVxuICAgICAgLnJlcGxhY2UoL1teXFx3XFxzLV0vZywgJycpXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpXG4gICAgICAuc3Vic3RyaW5nKDAsIDUwKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXBTY3JvbGxTcHkoKTogdm9pZCB7XG4gICAgdGhpcy5kZXN0cm95U2Nyb2xsU3B5KCk7XG5cbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuZmxhdEl0ZW1zKCk7XG4gICAgaWYgKGl0ZW1zLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuXG4gICAgLy8gQ29sbGVjdCBoZWFkaW5nIGVsZW1lbnRzXG4gICAgdGhpcy5oZWFkaW5nRWxlbWVudHMgPSBpdGVtc1xuICAgICAgLm1hcChpdGVtID0+IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGl0ZW0uaWQpKVxuICAgICAgLmZpbHRlcigoZWwpOiBlbCBpcyBIVE1MRWxlbWVudCA9PiBlbCAhPT0gbnVsbCk7XG5cbiAgICBpZiAodGhpcy5oZWFkaW5nRWxlbWVudHMubGVuZ3RoID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBTZXQgaW5pdGlhbCBhY3RpdmUgaXRlbVxuICAgIHRoaXMudXBkYXRlQWN0aXZlSGVhZGluZygpO1xuXG4gICAgLy8gVXNlIHNjcm9sbCBldmVudCB3aXRoIHJlcXVlc3RBbmltYXRpb25GcmFtZSBmb3IgcGVyZm9ybWFuY2VcbiAgICB0aGlzLm5nWm9uZS5ydW5PdXRzaWRlQW5ndWxhcigoKSA9PiB7XG4gICAgICB0aGlzLnNjcm9sbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLnJhZklkKSB7XG4gICAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5yYWZJZCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yYWZJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy51cGRhdGVBY3RpdmVIZWFkaW5nKCk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHRoaXMuc2Nyb2xsSGFuZGxlciwgeyBwYXNzaXZlOiB0cnVlIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVBY3RpdmVIZWFkaW5nKCk6IHZvaWQge1xuICAgIGNvbnN0IG9mZnNldFRvcCA9IHRoaXMucHJvcHMub2Zmc2V0VG9wID8/IDEwMDtcbiAgICBjb25zdCBzY3JvbGxZID0gd2luZG93LnNjcm9sbFk7XG5cbiAgICAvLyBGaW5kIHRoZSBoZWFkaW5nIHRoYXQgaXMgY3VycmVudGx5IGF0IG9yIGFib3ZlIHRoZSBvZmZzZXQgcG9pbnRcbiAgICBsZXQgYWN0aXZlSGVhZGluZzogSFRNTEVsZW1lbnQgfCBudWxsID0gbnVsbDtcblxuICAgIGZvciAoY29uc3QgaGVhZGluZyBvZiB0aGlzLmhlYWRpbmdFbGVtZW50cykge1xuICAgICAgY29uc3QgcmVjdCA9IGhlYWRpbmcuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgICBjb25zdCBoZWFkaW5nVG9wID0gcmVjdC50b3AgKyBzY3JvbGxZO1xuXG4gICAgICAvLyBJZiBoZWFkaW5nIGlzIGF0IG9yIGFib3ZlIHRoZSB0cmlnZ2VyIHBvaW50IChzY3JvbGxZICsgb2Zmc2V0KVxuICAgICAgaWYgKGhlYWRpbmdUb3AgPD0gc2Nyb2xsWSArIG9mZnNldFRvcCArIDEwKSB7XG4gICAgICAgIGFjdGl2ZUhlYWRpbmcgPSBoZWFkaW5nO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gSGVhZGluZ3MgYXJlIGluIG9yZGVyLCBzbyB3ZSBjYW4gc3RvcCBvbmNlIHdlIGZpbmQgb25lIGJlbG93XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIG5vIGhlYWRpbmcgaXMgYWJvdmUgdGhlIHRyaWdnZXIgcG9pbnQsIHVzZSB0aGUgZmlyc3Qgb25lXG4gICAgaWYgKCFhY3RpdmVIZWFkaW5nICYmIHRoaXMuaGVhZGluZ0VsZW1lbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFjdGl2ZUhlYWRpbmcgPSB0aGlzLmhlYWRpbmdFbGVtZW50c1swXTtcbiAgICB9XG5cbiAgICBpZiAoYWN0aXZlSGVhZGluZyAmJiBhY3RpdmVIZWFkaW5nLmlkICE9PSB0aGlzLmFjdGl2ZUlkKCkpIHtcbiAgICAgIHRoaXMubmdab25lLnJ1bigoKSA9PiB7XG4gICAgICAgIHRoaXMuYWN0aXZlSWQuc2V0KGFjdGl2ZUhlYWRpbmchLmlkKTtcbiAgICAgICAgdGhpcy5zZWN0aW9uQ2hhbmdlLmVtaXQoYWN0aXZlSGVhZGluZyEuaWQpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95U2Nyb2xsU3B5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNjcm9sbEhhbmRsZXIpIHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aGlzLnNjcm9sbEhhbmRsZXIpO1xuICAgICAgdGhpcy5zY3JvbGxIYW5kbGVyID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRoaXMucmFmSWQpIHtcbiAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKHRoaXMucmFmSWQpO1xuICAgICAgdGhpcy5yYWZJZCA9IG51bGw7XG4gICAgfVxuICAgIHRoaXMuaGVhZGluZ0VsZW1lbnRzID0gW107XG4gIH1cblxuICBzY3JvbGxUb1NlY3Rpb24oZXZlbnQ6IEV2ZW50LCBpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG5cbiAgICBjb25zdCBvZmZzZXRUb3AgPSB0aGlzLnByb3BzLm9mZnNldFRvcCA/PyAxMDA7XG5cbiAgICBjb25zdCB0b3AgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCArIHdpbmRvdy5zY3JvbGxZIC0gb2Zmc2V0VG9wO1xuXG4gICAgd2luZG93LnNjcm9sbFRvKHtcbiAgICAgIHRvcCxcbiAgICAgIGJlaGF2aW9yOiAnc21vb3RoJyxcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSBhY3RpdmUgaW1tZWRpYXRlbHkgZm9yIGJldHRlciBVWFxuICAgIHRoaXMuYWN0aXZlSWQuc2V0KGlkKTtcblxuICAgIC8vIFVwZGF0ZSBVUkwgaGFzaCB3aXRob3V0IGp1bXBpbmdcbiAgICBoaXN0b3J5LnB1c2hTdGF0ZShudWxsLCAnJywgYCMke2lkfWApO1xuICB9XG59XG4iXX0=
|
|
@@ -7079,7 +7079,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7079
7079
|
* @input props: NumberFromToMetadata - Configuration for the number range input.
|
|
7080
7080
|
*/
|
|
7081
7081
|
class NumberFromToComponent {
|
|
7082
|
-
|
|
7082
|
+
/** Get from label with i18n fallback */
|
|
7083
|
+
getFromLabel() {
|
|
7084
|
+
return this.props.fromLabel || this.i18n.t('from');
|
|
7085
|
+
}
|
|
7086
|
+
/** Get to label with i18n fallback */
|
|
7087
|
+
getToLabel() {
|
|
7088
|
+
return this.props.toLabel || this.i18n.t('to');
|
|
7089
|
+
}
|
|
7090
|
+
constructor() {
|
|
7091
|
+
this.i18n = inject(I18nService);
|
|
7092
|
+
}
|
|
7083
7093
|
ngOnInit() {
|
|
7084
7094
|
// Apply default values if configured
|
|
7085
7095
|
if (this.props?.withDefault || this.props?.value) {
|
|
@@ -7140,7 +7150,7 @@ class NumberFromToComponent {
|
|
|
7140
7150
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumberFromToComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7141
7151
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NumberFromToComponent, isStandalone: true, selector: "val-number-from-to", inputs: { props: "props" }, ngImport: i0, template: `
|
|
7142
7152
|
<div class="number-from-to-container">
|
|
7143
|
-
<ion-label position="stacked">{{
|
|
7153
|
+
<ion-label position="stacked">{{ getFromLabel() }}</ion-label>
|
|
7144
7154
|
<ion-input
|
|
7145
7155
|
[formControl]="fromControl"
|
|
7146
7156
|
type="number"
|
|
@@ -7151,7 +7161,7 @@ class NumberFromToComponent {
|
|
|
7151
7161
|
>
|
|
7152
7162
|
</ion-input>
|
|
7153
7163
|
|
|
7154
|
-
<ion-label position="stacked">{{
|
|
7164
|
+
<ion-label position="stacked">{{ getToLabel() }}</ion-label>
|
|
7155
7165
|
<ion-input
|
|
7156
7166
|
[formControl]="toControl"
|
|
7157
7167
|
type="number"
|
|
@@ -7168,7 +7178,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7168
7178
|
type: Component,
|
|
7169
7179
|
args: [{ selector: 'val-number-from-to', standalone: true, imports: [ReactiveFormsModule, IonInput, IonLabel], template: `
|
|
7170
7180
|
<div class="number-from-to-container">
|
|
7171
|
-
<ion-label position="stacked">{{
|
|
7181
|
+
<ion-label position="stacked">{{ getFromLabel() }}</ion-label>
|
|
7172
7182
|
<ion-input
|
|
7173
7183
|
[formControl]="fromControl"
|
|
7174
7184
|
type="number"
|
|
@@ -7179,7 +7189,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
7179
7189
|
>
|
|
7180
7190
|
</ion-input>
|
|
7181
7191
|
|
|
7182
|
-
<ion-label position="stacked">{{
|
|
7192
|
+
<ion-label position="stacked">{{ getToLabel() }}</ion-label>
|
|
7183
7193
|
<ion-input
|
|
7184
7194
|
[formControl]="toControl"
|
|
7185
7195
|
type="number"
|
|
@@ -12605,8 +12615,17 @@ class NumberStepperComponent {
|
|
|
12605
12615
|
constructor() {
|
|
12606
12616
|
this.valueChange = new EventEmitter();
|
|
12607
12617
|
this.states = ComponentStates;
|
|
12618
|
+
this.i18n = inject(I18nService);
|
|
12608
12619
|
this.valueSubscription = null;
|
|
12609
12620
|
}
|
|
12621
|
+
/** Get decrement button aria-label with i18n fallback */
|
|
12622
|
+
getDecrementLabel() {
|
|
12623
|
+
return this.props.decrementLabel || this.i18n.t('decrease');
|
|
12624
|
+
}
|
|
12625
|
+
/** Get increment button aria-label with i18n fallback */
|
|
12626
|
+
getIncrementLabel() {
|
|
12627
|
+
return this.props.incrementLabel || this.i18n.t('increase');
|
|
12628
|
+
}
|
|
12610
12629
|
ngOnInit() {
|
|
12611
12630
|
// Ensure initial value is within bounds
|
|
12612
12631
|
this.clampValue();
|
|
@@ -12747,7 +12766,7 @@ class NumberStepperComponent {
|
|
|
12747
12766
|
[shape]="props.buttonShape || 'round'"
|
|
12748
12767
|
[disabled]="isAtMin || props.state === states.DISABLED"
|
|
12749
12768
|
(click)="decrement()"
|
|
12750
|
-
[attr.aria-label]="
|
|
12769
|
+
[attr.aria-label]="getDecrementLabel()"
|
|
12751
12770
|
>
|
|
12752
12771
|
<ion-icon slot="icon-only" name="remove-outline"></ion-icon>
|
|
12753
12772
|
</ion-button>
|
|
@@ -12780,7 +12799,7 @@ class NumberStepperComponent {
|
|
|
12780
12799
|
[shape]="props.buttonShape || 'round'"
|
|
12781
12800
|
[disabled]="isAtMax || props.state === states.DISABLED"
|
|
12782
12801
|
(click)="increment()"
|
|
12783
|
-
[attr.aria-label]="
|
|
12802
|
+
[attr.aria-label]="getIncrementLabel()"
|
|
12784
12803
|
>
|
|
12785
12804
|
<ion-icon slot="icon-only" name="add-outline"></ion-icon>
|
|
12786
12805
|
</ion-button>
|
|
@@ -12847,7 +12866,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12847
12866
|
[shape]="props.buttonShape || 'round'"
|
|
12848
12867
|
[disabled]="isAtMin || props.state === states.DISABLED"
|
|
12849
12868
|
(click)="decrement()"
|
|
12850
|
-
[attr.aria-label]="
|
|
12869
|
+
[attr.aria-label]="getDecrementLabel()"
|
|
12851
12870
|
>
|
|
12852
12871
|
<ion-icon slot="icon-only" name="remove-outline"></ion-icon>
|
|
12853
12872
|
</ion-button>
|
|
@@ -12880,7 +12899,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
12880
12899
|
[shape]="props.buttonShape || 'round'"
|
|
12881
12900
|
[disabled]="isAtMax || props.state === states.DISABLED"
|
|
12882
12901
|
(click)="increment()"
|
|
12883
|
-
[attr.aria-label]="
|
|
12902
|
+
[attr.aria-label]="getIncrementLabel()"
|
|
12884
12903
|
>
|
|
12885
12904
|
<ion-icon slot="icon-only" name="add-outline"></ion-icon>
|
|
12886
12905
|
</ion-button>
|
|
@@ -32777,8 +32796,9 @@ class DocsTocComponent {
|
|
|
32777
32796
|
// Reactive state
|
|
32778
32797
|
this.activeId = signal('');
|
|
32779
32798
|
this.flatItems = signal([]);
|
|
32780
|
-
this.observer = null;
|
|
32781
32799
|
this.headingElements = [];
|
|
32800
|
+
this.scrollHandler = null;
|
|
32801
|
+
this.rafId = null;
|
|
32782
32802
|
}
|
|
32783
32803
|
ngOnInit() {
|
|
32784
32804
|
this.updateFlatItems();
|
|
@@ -32868,34 +32888,57 @@ class DocsTocComponent {
|
|
|
32868
32888
|
.filter((el) => el !== null);
|
|
32869
32889
|
if (this.headingElements.length === 0)
|
|
32870
32890
|
return;
|
|
32871
|
-
|
|
32872
|
-
|
|
32891
|
+
// Set initial active item
|
|
32892
|
+
this.updateActiveHeading();
|
|
32893
|
+
// Use scroll event with requestAnimationFrame for performance
|
|
32873
32894
|
this.ngZone.runOutsideAngular(() => {
|
|
32874
|
-
this.
|
|
32875
|
-
|
|
32876
|
-
|
|
32877
|
-
.filter(entry => entry.isIntersecting)
|
|
32878
|
-
.sort((a, b) => a.boundingClientRect.top - b.boundingClientRect.top);
|
|
32879
|
-
if (visibleEntries.length > 0) {
|
|
32880
|
-
const activeEntry = visibleEntries[0];
|
|
32881
|
-
this.ngZone.run(() => {
|
|
32882
|
-
this.activeId.set(activeEntry.target.id);
|
|
32883
|
-
this.sectionChange.emit(activeEntry.target.id);
|
|
32884
|
-
});
|
|
32895
|
+
this.scrollHandler = () => {
|
|
32896
|
+
if (this.rafId) {
|
|
32897
|
+
cancelAnimationFrame(this.rafId);
|
|
32885
32898
|
}
|
|
32886
|
-
|
|
32887
|
-
|
|
32888
|
-
|
|
32889
|
-
}
|
|
32890
|
-
|
|
32891
|
-
this.observer?.observe(el);
|
|
32892
|
-
});
|
|
32899
|
+
this.rafId = requestAnimationFrame(() => {
|
|
32900
|
+
this.updateActiveHeading();
|
|
32901
|
+
});
|
|
32902
|
+
};
|
|
32903
|
+
window.addEventListener('scroll', this.scrollHandler, { passive: true });
|
|
32893
32904
|
});
|
|
32894
32905
|
}
|
|
32906
|
+
updateActiveHeading() {
|
|
32907
|
+
const offsetTop = this.props.offsetTop ?? 100;
|
|
32908
|
+
const scrollY = window.scrollY;
|
|
32909
|
+
// Find the heading that is currently at or above the offset point
|
|
32910
|
+
let activeHeading = null;
|
|
32911
|
+
for (const heading of this.headingElements) {
|
|
32912
|
+
const rect = heading.getBoundingClientRect();
|
|
32913
|
+
const headingTop = rect.top + scrollY;
|
|
32914
|
+
// If heading is at or above the trigger point (scrollY + offset)
|
|
32915
|
+
if (headingTop <= scrollY + offsetTop + 10) {
|
|
32916
|
+
activeHeading = heading;
|
|
32917
|
+
}
|
|
32918
|
+
else {
|
|
32919
|
+
// Headings are in order, so we can stop once we find one below
|
|
32920
|
+
break;
|
|
32921
|
+
}
|
|
32922
|
+
}
|
|
32923
|
+
// If no heading is above the trigger point, use the first one
|
|
32924
|
+
if (!activeHeading && this.headingElements.length > 0) {
|
|
32925
|
+
activeHeading = this.headingElements[0];
|
|
32926
|
+
}
|
|
32927
|
+
if (activeHeading && activeHeading.id !== this.activeId()) {
|
|
32928
|
+
this.ngZone.run(() => {
|
|
32929
|
+
this.activeId.set(activeHeading.id);
|
|
32930
|
+
this.sectionChange.emit(activeHeading.id);
|
|
32931
|
+
});
|
|
32932
|
+
}
|
|
32933
|
+
}
|
|
32895
32934
|
destroyScrollSpy() {
|
|
32896
|
-
if (this.
|
|
32897
|
-
this.
|
|
32898
|
-
this.
|
|
32935
|
+
if (this.scrollHandler) {
|
|
32936
|
+
window.removeEventListener('scroll', this.scrollHandler);
|
|
32937
|
+
this.scrollHandler = null;
|
|
32938
|
+
}
|
|
32939
|
+
if (this.rafId) {
|
|
32940
|
+
cancelAnimationFrame(this.rafId);
|
|
32941
|
+
this.rafId = null;
|
|
32899
32942
|
}
|
|
32900
32943
|
this.headingElements = [];
|
|
32901
32944
|
}
|