valtech-components 2.0.510 → 2.0.511
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/refresher/refresher.component.mjs +254 -0
- package/esm2022/lib/components/molecules/refresher/types.mjs +15 -0
- package/esm2022/lib/components/organisms/infinite-list/infinite-list.component.mjs +618 -0
- package/esm2022/lib/components/organisms/infinite-list/types.mjs +15 -0
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +3 -3
- package/esm2022/lib/services/pagination/index.mjs +5 -0
- package/esm2022/lib/services/pagination/pagination.service.mjs +218 -0
- package/esm2022/lib/services/pagination/types.mjs +14 -0
- package/esm2022/lib/services/skeleton/config.mjs +79 -0
- package/esm2022/lib/services/skeleton/directives/loading.directive.mjs +215 -0
- package/esm2022/lib/services/skeleton/index.mjs +16 -0
- package/esm2022/lib/services/skeleton/skeleton.service.mjs +198 -0
- package/esm2022/lib/services/skeleton/templates/detail-skeleton.component.mjs +223 -0
- package/esm2022/lib/services/skeleton/templates/form-skeleton.component.mjs +127 -0
- package/esm2022/lib/services/skeleton/templates/grid-skeleton.component.mjs +154 -0
- package/esm2022/lib/services/skeleton/templates/list-skeleton.component.mjs +110 -0
- package/esm2022/lib/services/skeleton/templates/profile-skeleton.component.mjs +207 -0
- package/esm2022/lib/services/skeleton/templates/table-skeleton.component.mjs +116 -0
- package/esm2022/lib/services/skeleton/types.mjs +11 -0
- package/esm2022/public-api.mjs +12 -1
- package/fesm2022/valtech-components.mjs +3467 -950
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/refresher/refresher.component.d.ts +79 -0
- package/lib/components/molecules/refresher/types.d.ts +86 -0
- package/lib/components/organisms/infinite-list/infinite-list.component.d.ts +111 -0
- package/lib/components/organisms/infinite-list/types.d.ts +197 -0
- package/lib/services/pagination/index.d.ts +2 -0
- package/lib/services/pagination/pagination.service.d.ts +43 -0
- package/lib/services/pagination/types.d.ts +113 -0
- package/lib/services/skeleton/config.d.ts +30 -0
- package/lib/services/skeleton/directives/loading.directive.d.ts +71 -0
- package/lib/services/skeleton/index.d.ts +10 -0
- package/lib/services/skeleton/skeleton.service.d.ts +127 -0
- package/lib/services/skeleton/templates/detail-skeleton.component.d.ts +18 -0
- package/lib/services/skeleton/templates/form-skeleton.component.d.ts +22 -0
- package/lib/services/skeleton/templates/grid-skeleton.component.d.ts +18 -0
- package/lib/services/skeleton/templates/list-skeleton.component.d.ts +17 -0
- package/lib/services/skeleton/templates/profile-skeleton.component.d.ts +20 -0
- package/lib/services/skeleton/templates/table-skeleton.component.d.ts +17 -0
- package/lib/services/skeleton/types.d.ts +111 -0
- package/package.json +1 -1
- package/public-api.d.ts +6 -0
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, signal, ViewChild, ContentChild, } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { IonRefresher, IonRefresherContent, IonSpinner, IonText, } from '@ionic/angular/standalone';
|
|
4
|
+
import { DEFAULT_REFRESHER_METADATA, } from './types';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/common";
|
|
7
|
+
/**
|
|
8
|
+
* Componente de pull-to-refresh para movil y web.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* <!-- Uso basico -->
|
|
12
|
+
* <val-refresher
|
|
13
|
+
* [props]="{
|
|
14
|
+
* color: 'primary',
|
|
15
|
+
* pullingText: 'Arrastra para actualizar',
|
|
16
|
+
* refreshingText: 'Cargando...'
|
|
17
|
+
* }"
|
|
18
|
+
* (refresh)="onRefresh($event)"
|
|
19
|
+
* >
|
|
20
|
+
* <ion-content>
|
|
21
|
+
* <!-- Contenido scrolleable -->
|
|
22
|
+
* </ion-content>
|
|
23
|
+
* </val-refresher>
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* <!-- Con indicador personalizado -->
|
|
27
|
+
* <val-refresher [props]="{ color: 'primary' }" (refresh)="onRefresh($event)">
|
|
28
|
+
* <ng-template #pullingIndicator let-progress="progress">
|
|
29
|
+
* <div class="custom-indicator">
|
|
30
|
+
* <ion-icon name="arrow-down" [style.transform]="'rotate(' + progress * 180 + 'deg)'"></ion-icon>
|
|
31
|
+
* </div>
|
|
32
|
+
* </ng-template>
|
|
33
|
+
* <ion-content>...</ion-content>
|
|
34
|
+
* </val-refresher>
|
|
35
|
+
*/
|
|
36
|
+
export class RefresherComponent {
|
|
37
|
+
constructor() {
|
|
38
|
+
/** Configuracion del refresher */
|
|
39
|
+
this.props = {};
|
|
40
|
+
/** Evento emitido cuando se activa el refresh */
|
|
41
|
+
this.refresh = new EventEmitter();
|
|
42
|
+
/** Evento de progreso durante el pull */
|
|
43
|
+
this.pullProgressChange = new EventEmitter();
|
|
44
|
+
/** Evento de cambio de estado */
|
|
45
|
+
this.stateChange = new EventEmitter();
|
|
46
|
+
/** Estado actual del refresher */
|
|
47
|
+
this.state = signal('idle');
|
|
48
|
+
/** Progreso actual del pull (0-1) */
|
|
49
|
+
this.pullProgress = signal(0);
|
|
50
|
+
}
|
|
51
|
+
/** Props combinados con defaults */
|
|
52
|
+
get mergedProps() {
|
|
53
|
+
return { ...DEFAULT_REFRESHER_METADATA, ...this.props };
|
|
54
|
+
}
|
|
55
|
+
/** Si hay indicadores personalizados */
|
|
56
|
+
get hasCustomIndicator() {
|
|
57
|
+
return !!(this.pullingIndicator ||
|
|
58
|
+
this.refreshingIndicator ||
|
|
59
|
+
this.completingIndicator ||
|
|
60
|
+
this.props.indicatorConfig);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Activa programaticamente el refresh.
|
|
64
|
+
*/
|
|
65
|
+
triggerRefresh() {
|
|
66
|
+
this.state.set('refreshing');
|
|
67
|
+
this.emitRefreshEvent();
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Completa la operacion de refresh actual.
|
|
71
|
+
*/
|
|
72
|
+
complete() {
|
|
73
|
+
this.state.set('completing');
|
|
74
|
+
this.stateChange.emit('completing');
|
|
75
|
+
this.ionRefresher?.complete();
|
|
76
|
+
// Resetear a idle despues de la animacion
|
|
77
|
+
setTimeout(() => {
|
|
78
|
+
this.state.set('idle');
|
|
79
|
+
this.stateChange.emit('idle');
|
|
80
|
+
}, this.mergedProps.closeDuration ?? 280);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Cancela la operacion de refresh actual.
|
|
84
|
+
*/
|
|
85
|
+
cancel() {
|
|
86
|
+
this.ionRefresher?.cancel();
|
|
87
|
+
this.state.set('idle');
|
|
88
|
+
this.stateChange.emit('idle');
|
|
89
|
+
}
|
|
90
|
+
/** Handler para evento ionRefresh */
|
|
91
|
+
onIonRefresh(event) {
|
|
92
|
+
this.state.set('refreshing');
|
|
93
|
+
this.stateChange.emit('refreshing');
|
|
94
|
+
this.emitRefreshEvent();
|
|
95
|
+
}
|
|
96
|
+
/** Handler para evento ionPull */
|
|
97
|
+
onIonPull(event) {
|
|
98
|
+
const detail = event.detail;
|
|
99
|
+
const progress = Math.min(detail.progress, 1);
|
|
100
|
+
this.pullProgress.set(progress);
|
|
101
|
+
this.pullProgressChange.emit({
|
|
102
|
+
progress,
|
|
103
|
+
thresholdReached: progress >= 1,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
/** Handler para evento ionStart */
|
|
107
|
+
onIonStart() {
|
|
108
|
+
this.state.set('pulling');
|
|
109
|
+
this.stateChange.emit('pulling');
|
|
110
|
+
}
|
|
111
|
+
emitRefreshEvent() {
|
|
112
|
+
const event = {
|
|
113
|
+
complete: () => this.complete(),
|
|
114
|
+
cancel: () => this.cancel(),
|
|
115
|
+
timestamp: new Date(),
|
|
116
|
+
};
|
|
117
|
+
this.refresh.emit(event);
|
|
118
|
+
}
|
|
119
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RefresherComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
120
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: RefresherComponent, isStandalone: true, selector: "val-refresher", inputs: { props: "props" }, outputs: { refresh: "refresh", pullProgressChange: "pullProgressChange", stateChange: "stateChange" }, queries: [{ propertyName: "pullingIndicator", first: true, predicate: ["pullingIndicator"], descendants: true }, { propertyName: "refreshingIndicator", first: true, predicate: ["refreshingIndicator"], descendants: true }, { propertyName: "completingIndicator", first: true, predicate: ["completingIndicator"], descendants: true }], viewQueries: [{ propertyName: "ionRefresher", first: true, predicate: ["refresher"], descendants: true }], ngImport: i0, template: `
|
|
121
|
+
<ion-refresher
|
|
122
|
+
#refresher
|
|
123
|
+
slot="fixed"
|
|
124
|
+
[disabled]="mergedProps.disabled"
|
|
125
|
+
[pullMin]="mergedProps.pullThreshold"
|
|
126
|
+
[pullMax]="mergedProps.pullMax"
|
|
127
|
+
[pullFactor]="mergedProps.pullFactor"
|
|
128
|
+
[snapbackDuration]="mergedProps.snapbackDuration"
|
|
129
|
+
[closeDuration]="mergedProps.closeDuration"
|
|
130
|
+
(ionRefresh)="onIonRefresh($event)"
|
|
131
|
+
(ionPull)="onIonPull($event)"
|
|
132
|
+
(ionStart)="onIonStart()"
|
|
133
|
+
>
|
|
134
|
+
@if (hasCustomIndicator) {
|
|
135
|
+
<!-- Custom indicator templates -->
|
|
136
|
+
<div class="refresher-custom-content">
|
|
137
|
+
@switch (state()) {
|
|
138
|
+
@case ('pulling') {
|
|
139
|
+
@if (pullingIndicator) {
|
|
140
|
+
<ng-container
|
|
141
|
+
*ngTemplateOutlet="pullingIndicator; context: { progress: pullProgress() }"
|
|
142
|
+
></ng-container>
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
@case ('refreshing') {
|
|
146
|
+
@if (refreshingIndicator) {
|
|
147
|
+
<ng-container *ngTemplateOutlet="refreshingIndicator"></ng-container>
|
|
148
|
+
} @else {
|
|
149
|
+
<ion-spinner [name]="mergedProps.spinnerType" [color]="mergedProps.color"></ion-spinner>
|
|
150
|
+
@if (mergedProps.refreshingText) {
|
|
151
|
+
<ion-text [color]="mergedProps.color">{{ mergedProps.refreshingText }}</ion-text>
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
@case ('completing') {
|
|
156
|
+
@if (completingIndicator) {
|
|
157
|
+
<ng-container *ngTemplateOutlet="completingIndicator"></ng-container>
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
</div>
|
|
162
|
+
} @else {
|
|
163
|
+
<!-- Default Ionic refresher content -->
|
|
164
|
+
<ion-refresher-content
|
|
165
|
+
[pullingIcon]="mergedProps.spinnerType === 'crescent' ? 'chevron-down-circle-outline' : undefined"
|
|
166
|
+
[pullingText]="mergedProps.pullingText"
|
|
167
|
+
[refreshingSpinner]="mergedProps.spinnerType"
|
|
168
|
+
[refreshingText]="mergedProps.refreshingText"
|
|
169
|
+
></ion-refresher-content>
|
|
170
|
+
}
|
|
171
|
+
</ion-refresher>
|
|
172
|
+
|
|
173
|
+
<ng-content></ng-content>
|
|
174
|
+
`, isInline: true, styles: [":host{display:block;position:relative}.refresher-custom-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IonRefresher, selector: "ion-refresher", inputs: ["closeDuration", "disabled", "mode", "pullFactor", "pullMax", "pullMin", "snapbackDuration"] }, { kind: "component", type: IonRefresherContent, selector: "ion-refresher-content", inputs: ["pullingIcon", "pullingText", "refreshingSpinner", "refreshingText"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }] }); }
|
|
175
|
+
}
|
|
176
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RefresherComponent, decorators: [{
|
|
177
|
+
type: Component,
|
|
178
|
+
args: [{ selector: 'val-refresher', standalone: true, imports: [CommonModule, IonRefresher, IonRefresherContent, IonSpinner, IonText], template: `
|
|
179
|
+
<ion-refresher
|
|
180
|
+
#refresher
|
|
181
|
+
slot="fixed"
|
|
182
|
+
[disabled]="mergedProps.disabled"
|
|
183
|
+
[pullMin]="mergedProps.pullThreshold"
|
|
184
|
+
[pullMax]="mergedProps.pullMax"
|
|
185
|
+
[pullFactor]="mergedProps.pullFactor"
|
|
186
|
+
[snapbackDuration]="mergedProps.snapbackDuration"
|
|
187
|
+
[closeDuration]="mergedProps.closeDuration"
|
|
188
|
+
(ionRefresh)="onIonRefresh($event)"
|
|
189
|
+
(ionPull)="onIonPull($event)"
|
|
190
|
+
(ionStart)="onIonStart()"
|
|
191
|
+
>
|
|
192
|
+
@if (hasCustomIndicator) {
|
|
193
|
+
<!-- Custom indicator templates -->
|
|
194
|
+
<div class="refresher-custom-content">
|
|
195
|
+
@switch (state()) {
|
|
196
|
+
@case ('pulling') {
|
|
197
|
+
@if (pullingIndicator) {
|
|
198
|
+
<ng-container
|
|
199
|
+
*ngTemplateOutlet="pullingIndicator; context: { progress: pullProgress() }"
|
|
200
|
+
></ng-container>
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
@case ('refreshing') {
|
|
204
|
+
@if (refreshingIndicator) {
|
|
205
|
+
<ng-container *ngTemplateOutlet="refreshingIndicator"></ng-container>
|
|
206
|
+
} @else {
|
|
207
|
+
<ion-spinner [name]="mergedProps.spinnerType" [color]="mergedProps.color"></ion-spinner>
|
|
208
|
+
@if (mergedProps.refreshingText) {
|
|
209
|
+
<ion-text [color]="mergedProps.color">{{ mergedProps.refreshingText }}</ion-text>
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
@case ('completing') {
|
|
214
|
+
@if (completingIndicator) {
|
|
215
|
+
<ng-container *ngTemplateOutlet="completingIndicator"></ng-container>
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
</div>
|
|
220
|
+
} @else {
|
|
221
|
+
<!-- Default Ionic refresher content -->
|
|
222
|
+
<ion-refresher-content
|
|
223
|
+
[pullingIcon]="mergedProps.spinnerType === 'crescent' ? 'chevron-down-circle-outline' : undefined"
|
|
224
|
+
[pullingText]="mergedProps.pullingText"
|
|
225
|
+
[refreshingSpinner]="mergedProps.spinnerType"
|
|
226
|
+
[refreshingText]="mergedProps.refreshingText"
|
|
227
|
+
></ion-refresher-content>
|
|
228
|
+
}
|
|
229
|
+
</ion-refresher>
|
|
230
|
+
|
|
231
|
+
<ng-content></ng-content>
|
|
232
|
+
`, styles: [":host{display:block;position:relative}.refresher-custom-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:16px}\n"] }]
|
|
233
|
+
}], propDecorators: { ionRefresher: [{
|
|
234
|
+
type: ViewChild,
|
|
235
|
+
args: ['refresher']
|
|
236
|
+
}], pullingIndicator: [{
|
|
237
|
+
type: ContentChild,
|
|
238
|
+
args: ['pullingIndicator']
|
|
239
|
+
}], refreshingIndicator: [{
|
|
240
|
+
type: ContentChild,
|
|
241
|
+
args: ['refreshingIndicator']
|
|
242
|
+
}], completingIndicator: [{
|
|
243
|
+
type: ContentChild,
|
|
244
|
+
args: ['completingIndicator']
|
|
245
|
+
}], props: [{
|
|
246
|
+
type: Input
|
|
247
|
+
}], refresh: [{
|
|
248
|
+
type: Output
|
|
249
|
+
}], pullProgressChange: [{
|
|
250
|
+
type: Output
|
|
251
|
+
}], stateChange: [{
|
|
252
|
+
type: Output
|
|
253
|
+
}] } });
|
|
254
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVmcmVzaGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvcmVmcmVzaGVyL3JlZnJlc2hlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxLQUFLLEVBQ0wsTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUVULFlBQVksR0FDYixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUNMLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsVUFBVSxFQUNWLE9BQU8sR0FDUixNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFLTCwwQkFBMEIsR0FDM0IsTUFBTSxTQUFTLENBQUM7OztBQUVqQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQThFSCxNQUFNLE9BQU8sa0JBQWtCO0lBN0UvQjtRQXFGRSxrQ0FBa0M7UUFDekIsVUFBSyxHQUFzQixFQUFFLENBQUM7UUFFdkMsaURBQWlEO1FBQ3ZDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBZ0IsQ0FBQztRQUVyRCx5Q0FBeUM7UUFDL0IsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFFcEUsaUNBQWlDO1FBQ3ZCLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFM0Qsa0NBQWtDO1FBQ3pCLFVBQUssR0FBRyxNQUFNLENBQWlCLE1BQU0sQ0FBQyxDQUFDO1FBRWhELHFDQUFxQztRQUM1QixpQkFBWSxHQUFHLE1BQU0sQ0FBUyxDQUFDLENBQUMsQ0FBQztLQWtGM0M7SUFoRkMsb0NBQW9DO0lBQ3BDLElBQUksV0FBVztRQUNiLE9BQU8sRUFBRSxHQUFHLDBCQUEwQixFQUFFLEdBQUcsSUFBSSxDQUFD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Ozs7Ozs7Ozs7Ozs7Ozs7R0FzRFQsNk9BdkRTLFlBQVksc01BQUUsWUFBWSxpS0FBRSxtQkFBbUIsaUpBQUUsVUFBVSx5R0FBRSxPQUFPOzs0RkEwRW5FLGtCQUFrQjtrQkE3RTlCLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxZQUNyRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0RUOzhCQW9CdUIsWUFBWTtzQkFBbkMsU0FBUzt1QkFBQyxXQUFXO2dCQUdZLGdCQUFnQjtzQkFBakQsWUFBWTt1QkFBQyxrQkFBa0I7Z0JBQ0ssbUJBQW1CO3NCQUF2RCxZQUFZO3VCQUFDLHFCQUFxQjtnQkFDRSxtQkFBbUI7c0JBQXZELFlBQVk7dUJBQUMscUJBQXFCO2dCQUcxQixLQUFLO3NCQUFiLEtBQUs7Z0JBR0ksT0FBTztzQkFBaEIsTUFBTTtnQkFHRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR0csV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIE91dHB1dCxcbiAgRXZlbnRFbWl0dGVyLFxuICBzaWduYWwsXG4gIFZpZXdDaGlsZCxcbiAgVGVtcGxhdGVSZWYsXG4gIENvbnRlbnRDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgSW9uUmVmcmVzaGVyLFxuICBJb25SZWZyZXNoZXJDb250ZW50LFxuICBJb25TcGlubmVyLFxuICBJb25UZXh0LFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7XG4gIFJlZnJlc2hlck1ldGFkYXRhLFxuICBSZWZyZXNoZXJTdGF0ZSxcbiAgUmVmcmVzaEV2ZW50LFxuICBSZWZyZXNoUHVsbEV2ZW50LFxuICBERUZBVUxUX1JFRlJFU0hFUl9NRVRBREFUQSxcbn0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29tcG9uZW50ZSBkZSBwdWxsLXRvLXJlZnJlc2ggcGFyYSBtb3ZpbCB5IHdlYi5cbiAqXG4gKiBAZXhhbXBsZVxuICogPCEtLSBVc28gYmFzaWNvIC0tPlxuICogPHZhbC1yZWZyZXNoZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBjb2xvcjogJ3ByaW1hcnknLFxuICogICAgIHB1bGxpbmdUZXh0OiAnQXJyYXN0cmEgcGFyYSBhY3R1YWxpemFyJyxcbiAqICAgICByZWZyZXNoaW5nVGV4dDogJ0NhcmdhbmRvLi4uJ1xuICogICB9XCJcbiAqICAgKHJlZnJlc2gpPVwib25SZWZyZXNoKCRldmVudClcIlxuICogPlxuICogICA8aW9uLWNvbnRlbnQ+XG4gKiAgICAgPCEtLSBDb250ZW5pZG8gc2Nyb2xsZWFibGUgLS0+XG4gKiAgIDwvaW9uLWNvbnRlbnQ+XG4gKiA8L3ZhbC1yZWZyZXNoZXI+XG4gKlxuICogQGV4YW1wbGVcbiAqIDwhLS0gQ29uIGluZGljYWRvciBwZXJzb25hbGl6YWRvIC0tPlxuICogPHZhbC1yZWZyZXNoZXIgW3Byb3BzXT1cInsgY29sb3I6ICdwcmltYXJ5JyB9XCIgKHJlZnJlc2gpPVwib25SZWZyZXNoKCRldmVudClcIj5cbiAqICAgPG5nLXRlbXBsYXRlICNwdWxsaW5nSW5kaWNhdG9yIGxldC1wcm9ncmVzcz1cInByb2dyZXNzXCI+XG4gKiAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pbmRpY2F0b3JcIj5cbiAqICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctZG93blwiIFtzdHlsZS50cmFuc2Zvcm1dPVwiJ3JvdGF0ZSgnICsgcHJvZ3Jlc3MgKiAxODAgKyAnZGVnKSdcIj48L2lvbi1pY29uPlxuICogICAgIDwvZGl2PlxuICogICA8L25nLXRlbXBsYXRlPlxuICogICA8aW9uLWNvbnRlbnQ+Li4uPC9pb24tY29udGVudD5cbiAqIDwvdmFsLXJlZnJlc2hlcj5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLXJlZnJlc2hlcicsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElvblJlZnJlc2hlciwgSW9uUmVmcmVzaGVyQ29udGVudCwgSW9uU3Bpbm5lciwgSW9uVGV4dF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1yZWZyZXNoZXJcbiAgICAgICNyZWZyZXNoZXJcbiAgICAgIHNsb3Q9XCJmaXhlZFwiXG4gICAgICBbZGlzYWJsZWRdPVwibWVyZ2VkUHJvcHMuZGlzYWJsZWRcIlxuICAgICAgW3B1bGxNaW5dPVwibWVyZ2VkUHJvcHMucHVsbFRocmVzaG9sZFwiXG4gICAgICBbcHVsbE1heF09XCJtZXJnZWRQcm9wcy5wdWxsTWF4XCJcbiAgICAgIFtwdWxsRmFjdG9yXT1cIm1lcmdlZFByb3BzLnB1bGxGYWN0b3JcIlxuICAgICAgW3NuYXBiYWNrRHVyYXRpb25dPVwibWVyZ2VkUHJvcHMuc25hcGJhY2tEdXJhdGlvblwiXG4gICAgICBbY2xvc2VEdXJhdGlvbl09XCJtZXJnZWRQcm9wcy5jbG9zZUR1cmF0aW9uXCJcbiAgICAgIChpb25SZWZyZXNoKT1cIm9uSW9uUmVmcmVzaCgkZXZlbnQpXCJcbiAgICAgIChpb25QdWxsKT1cIm9uSW9uUHVsbCgkZXZlbnQpXCJcbiAgICAgIChpb25TdGFydCk9XCJvbklvblN0YXJ0KClcIlxuICAgID5cbiAgICAgIEBpZiAoaGFzQ3VzdG9tSW5kaWNhdG9yKSB7XG4gICAgICAgIDwhLS0gQ3VzdG9tIGluZGljYXRvciB0ZW1wbGF0ZXMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJyZWZyZXNoZXItY3VzdG9tLWNvbnRlbnRcIj5cbiAgICAgICAgICBAc3dpdGNoIChzdGF0ZSgpKSB7XG4gICAgICAgICAgICBAY2FzZSAoJ3B1bGxpbmcnKSB7XG4gICAgICAgICAgICAgIEBpZiAocHVsbGluZ0luZGljYXRvcikge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwicHVsbGluZ0luZGljYXRvcjsgY29udGV4dDogeyBwcm9ncmVzczogcHVsbFByb2dyZXNzKCkgfVwiXG4gICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBAY2FzZSAoJ3JlZnJlc2hpbmcnKSB7XG4gICAgICAgICAgICAgIEBpZiAocmVmcmVzaGluZ0luZGljYXRvcikge1xuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJyZWZyZXNoaW5nSW5kaWNhdG9yXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgIDxpb24tc3Bpbm5lciBbbmFtZV09XCJtZXJnZWRQcm9wcy5zcGlubmVyVHlwZVwiIFtjb2xvcl09XCJtZXJnZWRQcm9wcy5jb2xvclwiPjwvaW9uLXNwaW5uZXI+XG4gICAgICAgICAgICAgICAgQGlmIChtZXJnZWRQcm9wcy5yZWZyZXNoaW5nVGV4dCkge1xuICAgICAgICAgICAgICAgICAgPGlvbi10ZXh0IFtjb2xvcl09XCJtZXJnZWRQcm9wcy5jb2xvclwiPnt7IG1lcmdlZFByb3BzLnJlZnJlc2hpbmdUZXh0IH19PC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBjYXNlICgnY29tcGxldGluZycpIHtcbiAgICAgICAgICAgICAgQGlmIChjb21wbGV0aW5nSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNvbXBsZXRpbmdJbmRpY2F0b3JcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPCEtLSBEZWZhdWx0IElvbmljIHJlZnJlc2hlciBjb250ZW50IC0tPlxuICAgICAgICA8aW9uLXJlZnJlc2hlci1jb250ZW50XG4gICAgICAgICAgW3B1bGxpbmdJY29uXT1cIm1lcmdlZFByb3BzLnNwaW5uZXJUeXBlID09PSAnY3Jlc2NlbnQnID8gJ2NoZXZyb24tZG93bi1jaXJjbGUtb3V0bGluZScgOiB1bmRlZmluZWRcIlxuICAgICAgICAgIFtwdWxsaW5nVGV4dF09XCJtZXJnZWRQcm9wcy5wdWxsaW5nVGV4dFwiXG4gICAgICAgICAgW3JlZnJlc2hpbmdTcGlubmVyXT1cIm1lcmdlZFByb3BzLnNwaW5uZXJUeXBlXCJcbiAgICAgICAgICBbcmVmcmVzaGluZ1RleHRdPVwibWVyZ2VkUHJvcHMucmVmcmVzaGluZ1RleHRcIlxuICAgICAgICA+PC9pb24tcmVmcmVzaGVyLWNvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9pb24tcmVmcmVzaGVyPlxuXG4gICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICA6aG9zdCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICB9XG5cbiAgICAgIC5yZWZyZXNoZXItY3VzdG9tLWNvbnRlbnQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICAgIHBhZGRpbmc6IDE2cHg7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgUmVmcmVzaGVyQ29tcG9uZW50IHtcbiAgQFZpZXdDaGlsZCgncmVmcmVzaGVyJykgaW9uUmVmcmVzaGVyITogSW9uUmVmcmVzaGVyO1xuXG4gIC8qKiBUZW1wbGF0ZXMgcGVyc29uYWxpemFkb3MgdmlhIGNvbnRlbnQgcHJvamVjdGlvbiAqL1xuICBAQ29udGVudENoaWxkKCdwdWxsaW5nSW5kaWNhdG9yJykgcHVsbGluZ0luZGljYXRvcj86IFRlbXBsYXRlUmVmPHsgcHJvZ3Jlc3M6IG51bWJlciB9PjtcbiAgQENvbnRlbnRDaGlsZCgncmVmcmVzaGluZ0luZGljYXRvcicpIHJlZnJlc2hpbmdJbmRpY2F0b3I/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcbiAgQENvbnRlbnRDaGlsZCgnY29tcGxldGluZ0luZGljYXRvcicpIGNvbXBsZXRpbmdJbmRpY2F0b3I/OiBUZW1wbGF0ZVJlZjx2b2lkPjtcblxuICAvKiogQ29uZmlndXJhY2lvbiBkZWwgcmVmcmVzaGVyICovXG4gIEBJbnB1dCgpIHByb3BzOiBSZWZyZXNoZXJNZXRhZGF0YSA9IHt9O1xuXG4gIC8qKiBFdmVudG8gZW1pdGlkbyBjdWFuZG8gc2UgYWN0aXZhIGVsIHJlZnJlc2ggKi9cbiAgQE91dHB1dCgpIHJlZnJlc2ggPSBuZXcgRXZlbnRFbWl0dGVyPFJlZnJlc2hFdmVudD4oKTtcblxuICAvKiogRXZlbnRvIGRlIHByb2dyZXNvIGR1cmFudGUgZWwgcHVsbCAqL1xuICBAT3V0cHV0KCkgcHVsbFByb2dyZXNzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxSZWZyZXNoUHVsbEV2ZW50PigpO1xuXG4gIC8qKiBFdmVudG8gZGUgY2FtYmlvIGRlIGVzdGFkbyAqL1xuICBAT3V0cHV0KCkgc3RhdGVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFJlZnJlc2hlclN0YXRlPigpO1xuXG4gIC8qKiBFc3RhZG8gYWN0dWFsIGRlbCByZWZyZXNoZXIgKi9cbiAgcmVhZG9ubHkgc3RhdGUgPSBzaWduYWw8UmVmcmVzaGVyU3RhdGU+KCdpZGxlJyk7XG5cbiAgLyoqIFByb2dyZXNvIGFjdHVhbCBkZWwgcHVsbCAoMC0xKSAqL1xuICByZWFkb25seSBwdWxsUHJvZ3Jlc3MgPSBzaWduYWw8bnVtYmVyPigwKTtcblxuICAvKiogUHJvcHMgY29tYmluYWRvcyBjb24gZGVmYXVsdHMgKi9cbiAgZ2V0IG1lcmdlZFByb3BzKCk6IFJlZnJlc2hlck1ldGFkYXRhIHtcbiAgICByZXR1cm4geyAuLi5ERUZBVUxUX1JFRlJFU0hFUl9NRVRBREFUQSwgLi4udGhpcy5wcm9wcyB9O1xuICB9XG5cbiAgLyoqIFNpIGhheSBpbmRpY2Fkb3JlcyBwZXJzb25hbGl6YWRvcyAqL1xuICBnZXQgaGFzQ3VzdG9tSW5kaWNhdG9yKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIShcbiAgICAgIHRoaXMucHVsbGluZ0luZGljYXRvciB8fFxuICAgICAgdGhpcy5yZWZyZXNoaW5nSW5kaWNhdG9yIHx8XG4gICAgICB0aGlzLmNvbXBsZXRpbmdJbmRpY2F0b3IgfHxcbiAgICAgIHRoaXMucHJvcHMuaW5kaWNhdG9yQ29uZmlnXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBY3RpdmEgcHJvZ3JhbWF0aWNhbWVudGUgZWwgcmVmcmVzaC5cbiAgICovXG4gIHRyaWdnZXJSZWZyZXNoKCk6IHZvaWQge1xuICAgIHRoaXMuc3RhdGUuc2V0KCdyZWZyZXNoaW5nJyk7XG4gICAgdGhpcy5lbWl0UmVmcmVzaEV2ZW50KCk7XG4gIH1cblxuICAvKipcbiAgICogQ29tcGxldGEgbGEgb3BlcmFjaW9uIGRlIHJlZnJlc2ggYWN0dWFsLlxuICAgKi9cbiAgY29tcGxldGUoKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ2NvbXBsZXRpbmcnKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoJ2NvbXBsZXRpbmcnKTtcbiAgICB0aGlzLmlvblJlZnJlc2hlcj8uY29tcGxldGUoKTtcblxuICAgIC8vIFJlc2V0ZWFyIGEgaWRsZSBkZXNwdWVzIGRlIGxhIGFuaW1hY2lvblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5zdGF0ZS5zZXQoJ2lkbGUnKTtcbiAgICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCgnaWRsZScpO1xuICAgIH0sIHRoaXMubWVyZ2VkUHJvcHMuY2xvc2VEdXJhdGlvbiA/PyAyODApO1xuICB9XG5cbiAgLyoqXG4gICAqIENhbmNlbGEgbGEgb3BlcmFjaW9uIGRlIHJlZnJlc2ggYWN0dWFsLlxuICAgKi9cbiAgY2FuY2VsKCk6IHZvaWQge1xuICAgIHRoaXMuaW9uUmVmcmVzaGVyPy5jYW5jZWwoKTtcbiAgICB0aGlzLnN0YXRlLnNldCgnaWRsZScpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCgnaWRsZScpO1xuICB9XG5cbiAgLyoqIEhhbmRsZXIgcGFyYSBldmVudG8gaW9uUmVmcmVzaCAqL1xuICBvbklvblJlZnJlc2goZXZlbnQ6IEN1c3RvbUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZS5zZXQoJ3JlZnJlc2hpbmcnKTtcbiAgICB0aGlzLnN0YXRlQ2hhbmdlLmVtaXQoJ3JlZnJlc2hpbmcnKTtcbiAgICB0aGlzLmVtaXRSZWZyZXNoRXZlbnQoKTtcbiAgfVxuXG4gIC8qKiBIYW5kbGVyIHBhcmEgZXZlbnRvIGlvblB1bGwgKi9cbiAgb25Jb25QdWxsKGV2ZW50OiBDdXN0b21FdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGRldGFpbCA9IGV2ZW50LmRldGFpbDtcbiAgICBjb25zdCBwcm9ncmVzcyA9IE1hdGgubWluKGRldGFpbC5wcm9ncmVzcywgMSk7XG4gICAgdGhpcy5wdWxsUHJvZ3Jlc3Muc2V0KHByb2dyZXNzKTtcblxuICAgIHRoaXMucHVsbFByb2dyZXNzQ2hhbmdlLmVtaXQoe1xuICAgICAgcHJvZ3Jlc3MsXG4gICAgICB0aHJlc2hvbGRSZWFjaGVkOiBwcm9ncmVzcyA+PSAxLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIEhhbmRsZXIgcGFyYSBldmVudG8gaW9uU3RhcnQgKi9cbiAgb25Jb25TdGFydCgpOiB2b2lkIHtcbiAgICB0aGlzLnN0YXRlLnNldCgncHVsbGluZycpO1xuICAgIHRoaXMuc3RhdGVDaGFuZ2UuZW1pdCgncHVsbGluZycpO1xuICB9XG5cbiAgcHJpdmF0ZSBlbWl0UmVmcmVzaEV2ZW50KCk6IHZvaWQge1xuICAgIGNvbnN0IGV2ZW50OiBSZWZyZXNoRXZlbnQgPSB7XG4gICAgICBjb21wbGV0ZTogKCkgPT4gdGhpcy5jb21wbGV0ZSgpLFxuICAgICAgY2FuY2VsOiAoKSA9PiB0aGlzLmNhbmNlbCgpLFxuICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgIH07XG4gICAgdGhpcy5yZWZyZXNoLmVtaXQoZXZlbnQpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Valores por defecto para el refresher.
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_REFRESHER_METADATA = {
|
|
5
|
+
disabled: false,
|
|
6
|
+
pullThreshold: 70,
|
|
7
|
+
pullMax: 200,
|
|
8
|
+
pullFactor: 0.5,
|
|
9
|
+
snapbackDuration: 280,
|
|
10
|
+
closeDuration: 280,
|
|
11
|
+
spinnerType: 'crescent',
|
|
12
|
+
hapticFeedback: true,
|
|
13
|
+
webMode: false,
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3JlZnJlc2hlci90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5RkE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSwwQkFBMEIsR0FBK0I7SUFDcEUsUUFBUSxFQUFFLEtBQUs7SUFDZixhQUFhLEVBQUUsRUFBRTtJQUNqQixPQUFPLEVBQUUsR0FBRztJQUNaLFVBQVUsRUFBRSxHQUFHO0lBQ2YsZ0JBQWdCLEVBQUUsR0FBRztJQUNyQixhQUFhLEVBQUUsR0FBRztJQUNsQixXQUFXLEVBQUUsVUFBVTtJQUN2QixjQUFjLEVBQUUsSUFBSTtJQUNwQixPQUFPLEVBQUUsS0FBSztDQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29sb3IgfSBmcm9tICdAaW9uaWMvY29yZSc7XG5cbi8qKlxuICogRXN0YWRvIGRlbCBjb21wb25lbnRlIHJlZnJlc2hlci5cbiAqL1xuZXhwb3J0IHR5cGUgUmVmcmVzaGVyU3RhdGUgPSAnaWRsZScgfCAncHVsbGluZycgfCAncmVmcmVzaGluZycgfCAnY29tcGxldGluZyc7XG5cbi8qKlxuICogVGlwb3MgZGUgc3Bpbm5lciBkaXNwb25pYmxlcy5cbiAqL1xuZXhwb3J0IHR5cGUgUmVmcmVzaGVyU3Bpbm5lclR5cGUgPSAnY2lyY3VsYXInIHwgJ2NyZXNjZW50JyB8ICdkb3RzJyB8ICdsaW5lcy1zaGFycCc7XG5cbi8qKlxuICogRXZlbnRvIGVtaXRpZG8gY3VhbmRvIHNlIGFjdGl2YSBlbCByZWZyZXNoLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hFdmVudCB7XG4gIC8qKiBMbGFtYXIgY3VhbmRvIGxhIG9wZXJhY2lvbiBkZSByZWZyZXNoIGNvbXBsZXRhICovXG4gIGNvbXBsZXRlOiAoKSA9PiB2b2lkO1xuICAvKiogTGxhbWFyIHBhcmEgY2FuY2VsYXIgZWwgcmVmcmVzaCAqL1xuICBjYW5jZWw6ICgpID0+IHZvaWQ7XG4gIC8qKiBUaW1lc3RhbXAgY3VhbmRvIGluaWNpbyBlbCByZWZyZXNoICovXG4gIHRpbWVzdGFtcDogRGF0ZTtcbn1cblxuLyoqXG4gKiBFdmVudG8gZGUgcHJvZ3Jlc28gZHVyYW50ZSBlbCBnZXN0byBkZSBwdWxsLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlZnJlc2hQdWxsRXZlbnQge1xuICAvKiogVmFsb3IgZGUgcHJvZ3Jlc28gZW50cmUgMCB5IDEgKi9cbiAgcHJvZ3Jlc3M6IG51bWJlcjtcbiAgLyoqIFNpIHNlIGhhIGFsY2FuemFkbyBlbCB1bWJyYWwgZGUgcHVsbCAqL1xuICB0aHJlc2hvbGRSZWFjaGVkOiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYWNpb24gZGUgaW5kaWNhZG9yIHBlcnNvbmFsaXphZG8uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaGVySW5kaWNhdG9yQ29uZmlnIHtcbiAgLyoqIFRlbXBsYXRlIHBlcnNvbmFsaXphZG8gcGFyYSBlc3RhZG8gcHVsbGluZyAqL1xuICBwdWxsaW5nVGVtcGxhdGU/OiBUZW1wbGF0ZVJlZjx7IHByb2dyZXNzOiBudW1iZXIgfT47XG4gIC8qKiBUZW1wbGF0ZSBwZXJzb25hbGl6YWRvIHBhcmEgZXN0YWRvIHJlZnJlc2hpbmcgKi9cbiAgcmVmcmVzaGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG4gIC8qKiBUZW1wbGF0ZSBwZXJzb25hbGl6YWRvIHBhcmEgZXN0YWRvIGNvbXBsZXRpbmcgKi9cbiAgY29tcGxldGluZ1RlbXBsYXRlPzogVGVtcGxhdGVSZWY8dm9pZD47XG59XG5cbi8qKlxuICogTWV0YWRhdGEgcGFyYSBlbCBjb21wb25lbnRlIHZhbC1yZWZyZXNoZXIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVmcmVzaGVyTWV0YWRhdGEge1xuICAvKiogU2kgZWwgcmVmcmVzaGVyIGVzdGEgZGVzaGFiaWxpdGFkbyAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW47XG4gIC8qKiBVbWJyYWwgZGUgcHVsbCBlbiBwaXhlbHMgKGRlZmF1bHQ6IDcwKSAqL1xuICBwdWxsVGhyZXNob2xkPzogbnVtYmVyO1xuICAvKiogRGlzdGFuY2lhIG1heGltYSBkZSBwdWxsIGVuIHBpeGVscyAoZGVmYXVsdDogMjAwKSAqL1xuICBwdWxsTWF4PzogbnVtYmVyO1xuICAvKiogRmFjdG9yIGRlIHJlc2lzdGVuY2lhIGRlbCBwdWxsICgwLTEsIGRlZmF1bHQ6IDAuNSkgKi9cbiAgcHVsbEZhY3Rvcj86IG51bWJlcjtcbiAgLyoqIER1cmFjaW9uIGRlIHNuYXAgYmFjayBlbiBtcyAoZGVmYXVsdDogMjgwKSAqL1xuICBzbmFwYmFja0R1cmF0aW9uPzogbnVtYmVyO1xuICAvKiogRHVyYWNpb24gZGUgY2llcnJlIGVuIG1zIChkZWZhdWx0OiAyODApICovXG4gIGNsb3NlRHVyYXRpb24/OiBudW1iZXI7XG4gIC8qKiBDb2xvciBkZWwgc3Bpbm5lciAqL1xuICBjb2xvcj86IENvbG9yO1xuICAvKiogVGlwbyBkZSBzcGlubmVyICovXG4gIHNwaW5uZXJUeXBlPzogUmVmcmVzaGVyU3Bpbm5lclR5cGU7XG4gIC8qKiBUZXh0byBtb3N0cmFkbyBtaWVudHJhcyBzZSBhcnJhc3RyYSAqL1xuICBwdWxsaW5nVGV4dD86IHN0cmluZztcbiAgLyoqIFRleHRvIG1vc3RyYWRvIG1pZW50cmFzIHNlIGFjdHVhbGl6YSAqL1xuICByZWZyZXNoaW5nVGV4dD86IHN0cmluZztcbiAgLyoqIENvbmZpZ3VyYWNpb24gZGUgaW5kaWNhZG9yIHBlcnNvbmFsaXphZG8gKi9cbiAgaW5kaWNhdG9yQ29uZmlnPzogUmVmcmVzaGVySW5kaWNhdG9yQ29uZmlnO1xuICAvKiogSGFiaWxpdGFyIGZlZWRiYWNrIGhhcHRpY28gZW4gbW92aWwgKGRlZmF1bHQ6IHRydWUpICovXG4gIGhhcHRpY0ZlZWRiYWNrPzogYm9vbGVhbjtcbiAgLyoqIE1vZG8gd2ViIC0gaGFiaWxpdGEgcHVsbC10by1yZWZyZXNoIGVuIG5hdmVnYWRvcmVzIGRlc2t0b3AgKi9cbiAgd2ViTW9kZT86IGJvb2xlYW47XG4gIC8qKiBJZGVudGlmaWNhZG9yIHVuaWNvICovXG4gIHRva2VuPzogc3RyaW5nO1xuXG4gIC8vIFNvcG9ydGUgaTE4blxuICAvKiogS2V5IGRlIHRyYWR1Y2Npb24gcGFyYSB0ZXh0byBwdWxsaW5nICovXG4gIHB1bGxpbmdUZXh0S2V5Pzogc3RyaW5nO1xuICAvKiogS2V5IGRlIHRyYWR1Y2Npb24gcGFyYSB0ZXh0byByZWZyZXNoaW5nICovXG4gIHJlZnJlc2hpbmdUZXh0S2V5Pzogc3RyaW5nO1xuICAvKiogQ2xhc2UgQ1NTIGFkaWNpb25hbCAqL1xuICBjb250ZW50Q2xhc3M/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVmFsb3JlcyBwb3IgZGVmZWN0byBwYXJhIGVsIHJlZnJlc2hlci5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUkVGUkVTSEVSX01FVEFEQVRBOiBQYXJ0aWFsPFJlZnJlc2hlck1ldGFkYXRhPiA9IHtcbiAgZGlzYWJsZWQ6IGZhbHNlLFxuICBwdWxsVGhyZXNob2xkOiA3MCxcbiAgcHVsbE1heDogMjAwLFxuICBwdWxsRmFjdG9yOiAwLjUsXG4gIHNuYXBiYWNrRHVyYXRpb246IDI4MCxcbiAgY2xvc2VEdXJhdGlvbjogMjgwLFxuICBzcGlubmVyVHlwZTogJ2NyZXNjZW50JyxcbiAgaGFwdGljRmVlZGJhY2s6IHRydWUsXG4gIHdlYk1vZGU6IGZhbHNlLFxufTtcbiJdfQ==
|